没有组累加器运算符的Mongodb聚合

时间:2019-06-23 10:24:22

标签: node.js mongodb

如何在没有累加器运算符的情况下聚合组?

这是我的脚本:

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"}, ...]

1 个答案:

答案 0 :(得分:0)

称为$replaceRoot的聚合阶段正是您所需要的。顾名思义,它将整个文档替换为指定的文档(在您的情况下为单个字段):

db.collection.aggregate([
  // ...
  {$replaceRoot: {newRoot: '$_id'}}
])

注意:它在MongoDB 3.4和更高版本中可用。