Mongodb聚合嵌套组

我已经在我的collections中分配了人员,状态,就像下面一样

[ {"ASSIGN_ID": "583f84bce58725f76b322398", "STATUS": 1}, {"ASSIGN_ID": "583f84bce58725f76b322398","STATUS": 4}, {"ASSIGN_ID": "583f84bce58725f76b322398","STATUS": 4}, {"ASSIGN_ID": "583f84bce58725f76b322398","STATUS": 3}, {"ASSIGN_ID": "583f84bce58725f76b322311","STATUS": 1}, {"ASSIGN_ID": "583f84bce58725f76b322311","STATUS": 3}, {"ASSIGN_ID": "583f84bce58725f76b322322","STATUS": 1}, {"ASSIGN_ID": "583f84bce58725f76b322322","STATUS": 4} ] 

我想通过ASSIGN_ID将这些数据分组,并在每个状态STATUS计数内与下面相同。

 [ { "ASSIGN_ID":"583f84bce58725f76b322398", "STATUS_GROUP":[ { "STATUS":1, "COUNT":1 }, { "STATUS":3, "COUNT":1 }, { "STATUS":4, "COUNT":2 } ] }, { "ASSIGN_ID":"583f84bce58725f76b322311", "STATUS_GROUP":[ { "STATUS":1, "COUNT":1 }, { "STATUS":3, "COUNT":1 } ] }, { "ASSIGN_ID":"583f84bce58725f76b322322", "STATUS_GROUP":[ { "STATUS":1, "COUNT":1 }, { "STATUS":4, "COUNT":1 } ] } ] 

不过,我已经编写代码,只能按照STATUS进行分组。 请在下面查询。

 Inspection.aggregate([ {$group: { "_id": '$STATUS', "count" : { $sum : 1 }}}], function (err, result) { }}); 

请帮我解决这个问题。

使用这个命令,它会适用于你的示例,希望它能解决你的问题,

 db.testCollection.aggregate([{ $group: { _id: { ASSIGN_ID: "$ASSIGN_ID", STATUS: "$STATUS" }, count: { "$sum": 1 } } }, { $group: { _id: "$_id.ASSIGN_ID", STATUS_GROUP: { $push: { STATUS: "$_id.STATUS", count: "$count" } } } }]) 

在shell中输出:

 { "_id": "583f84bce58725f76b322398", "STATUS_GROUP": [{ "STATUS": 3, "count": 1 }, { "STATUS": 4, "count": 2 }, { "STATUS": 1, "count": 1 }] }, { "_id": "583f84bce58725f76b322311", "STATUS_GROUP": [{ "STATUS": 3, "count": 1 }, { "STATUS": 1, "count": 1 }] }, { "_id": "583f84bce58725f76b322322", "STATUS_GROUP": [{ "STATUS": 1, "count": 1 }, { "STATUS": 4, "count": 1 }] }