我需要通过 mongodb 聚合管道内的 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
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
给出以下文档结构
{
"_id" : ObjectId("5a020ea06216d24dd6050a07"),
"arr" : [
{
"_id" : "Specialty Retailer",
"votes" : [
{
"mallId" : "59ddea3718a03a4e81f289f5",
"count" : 13
},
{
"mallId" : "59ddea3718a03a4e81f289f5",
"count" : 270
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个查询应该让你继续:
db.collection.aggregate({
$unwind: "$arr"
}, {
$unwind: "$arr.votes"
}, {
$group: {
"_id": {
"_id": "$_id",
"arrId": "$arr._id",
"mallId": "$arr.votes.mallId"
},
"totalCount": {
$sum: "$arr.votes.count"
}
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |