1 回答
TA贡献1856条经验 获得超5个赞
$lookup
使用管道阶段的计数器集合,让传递 2 个字段id, login
以匹配计数器集合$match
两个字段条件$addFields
count
从计数器数组中求和计数字段,使用迭代$reduce
循环和$add
求和计数字段的值$skip
用于分页$limit
超过你的文件限制
let page = 1; // start pagination from first
let limit = 1000;
let skip = (page - 1) * limit;
let users = await User.aggregate([
{
$lookup: {
from: "counters",
let: {
id: "$id",
login: "$login"
},
pipeline: [
{
$match: {
$expr: {
$eq: ["$userName", "$$login"],
$eq: ["$userNumber", "$$id"]
}
}
}
],
as: "count"
}
},
{
$addFields: {
count: {
$reduce: {
input: "$count",
initialValue: 0,
in: { $add: ["$$value", "$$this.count"] }
}
}
}
},
{ $skip: skip },
{ $limit: limit }
])
添加回答
举报