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 }
])
添加回答
舉報