【发布时间】:2016-09-09 02:53:27
【问题描述】:
我的收藏结构是,
[{
"_id": "....",
"name": "aaaa",
"level_max_leaves": [{
level: "ObjectIdString 1",
max_leaves: 4,
}]
}, {
"_id": "....",
"name": "bbbb",
"level_max_leaves": [{
level: "ObjectIdString 1",
max_leaves: 4,
}]
}, {
"_id": "....",
"name": "cccc",
"level_max_leaves": [{
level: "ObjectIdString 1",
max_leaves: 7,
}]
}, {
"_id": "....",
"name": "dddd",
"level_max_leaves": [{
level: "ObjectIdString 2",
max_leaves: 3,
}]
}]
现在我需要对具有ObjectIdString 1 的max_leaves 的字段求和?
还有(4+4+7=15)的结果。
到目前为止我尝试过
var empLevelId = 1234... ;
MyModel.aggregate(
{$unwind: "$level_max_leaves.level"},
{$match: {"$level_max_leaves.level": empLevelId } },
{$group: { "_id": "$level_max_leaves.level",
"total": { "$sum": "$level_max_leaves.max_leaves" }}},
function (err, res) {
console.log(res);
});
如何做到这一点?
【问题讨论】:
-
$max_leaves 很可能是对象中没有字段,试试$level_max_leaves.max_leaves
标签: node.js mongodb mongoose aggregation-framework