我需要在mongodb aggreate管道内按mallId将选票内的对象分组。一直在寻找答案,但是我对mongodb不太熟悉,所以我有点迷失了。谁能帮我吗?
[
{
"_id": "Specialty Retailer",
"votes": [
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 13
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 270
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 13
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 2
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 15
},
{
"mallId": "59ddea3718a03a4e81f289f5",
"count": 2
}
]
}
]
最佳答案
鉴于以下文件结构
{
"_id" : ObjectId("5a020ea06216d24dd6050a07"),
"arr" : [
{
"_id" : "Specialty Retailer",
"votes" : [
{
"mallId" : "59ddea3718a03a4e81f289f5",
"count" : 13
},
{
"mallId" : "59ddea3718a03a4e81f289f5",
"count" : 270
}
]
}
]
}
这个查询应该可以帮助您:
db.collection.aggregate({
$unwind: "$arr"
}, {
$unwind: "$arr.votes"
}, {
$group: {
"_id": {
"_id": "$_id",
"arrId": "$arr._id",
"mallId": "$arr.votes.mallId"
},
"totalCount": {
$sum: "$arr.votes.count"
}
}
})
关于MongoDB:聚集对象数组中数组中的对象分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47162709/