Mongodb聚合嵌套组 [英] Mongodb Aggregate Nested Group

查看:112
本文介绍了Mongodb聚合嵌套组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在收藏夹中分配了个人,状态,就像下面一样

I have assigned person, status inside my collection simply like below

[
 {"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 的计数对每个数据进行分组,如下所示.

i want to group this data by ASSIGN_ID and inside that by STATUS count of each STATUS same as below.

[  
   {  
      "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 分组.请在下面找到查询.

however, i have write code and it only grouped by STATUS only. please find the query below.

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

请帮助我解决此问题.

推荐答案

使用此命令,它将适用于您的示例案例, 希望它能解决您的问题,

Use this command, it'll work for your sample case, hope it'll fix your problem ,

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
    }]
}

这篇关于Mongodb聚合嵌套组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆