我需要在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/

10-12 12:32
查看更多