如何在没有累加器运算符的情况下聚合组?
这是我的脚本:
var filterData = {SAL04: 0, SAL05: 0, SAL06: 0, SAL07: 0, SAL08: 0}
var groupData = {AKUN: "$AKUN", KELUNIT: "$KELUNIT", NMUNIT: "$NMUNIT"}
isGroupSingle.aggregate([
{$match: {$and: [filterData]}},
{$group: {_id: groupData}}
]).toArray(function (error, data) {
if (error)
response.json(error);
else if (data)
response.json(data);
});
这是我的回复:
[
{
"_id": {
"AKUN": "31218",
"KELUNIT": "312181706",
"NMUNIT": "PBB CABANG PRINGSEWU"
}
},
{
"_id": {
"AKUN": "31218",
"KELUNIT": "312181703",
"NMUNIT": "PBB LAMPUNG"
}
},
{
"_id": {
"AKUN": "31218",
"KELUNIT": "312181503",
"NMUNIT": "PBB CABANG KARAWANG"
}
}
]
我想这样:[{"AKUN": "47377", "KELUNIT": "83773873", "NMUNIT": "PBB BLA BLA"}, ...]
答案 0 :(得分:0)
称为$replaceRoot
的聚合阶段正是您所需要的。顾名思义,它将整个文档替换为指定的文档(在您的情况下为单个字段):
db.collection.aggregate([
// ...
{$replaceRoot: {newRoot: '$_id'}}
])
注意:它在MongoDB 3.4和更高版本中可用。