[英]Mongodb Aggregate Nested Group
我在我的收藏中分配了人物,状态就像下面一样
[
{"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的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
}]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.