计算 MongoDB 中某个 id 的不同值

Count for distinct values for a certain id in MongoDB

我正在学习 MongoDB 聚合以进行数据分析。样本数据集如下:

{ "_id" : ObjectId("5c8fa906cd5591004c2db5f9"), "id" : 49893861, "cate_id" : "81614" }
{ "_id" : ObjectId("5c8fa906cd5591004c2db602"), "id" : 49893861, "cate_id" : "1102" }
{ "_id" : ObjectId("5c8fa906cd5591004c2db606"), "id" : 49893861, "cate_id" : "1102" }

期望的结果应该是:

{
  "id": 49893861,
  "categories": [
    {
      "cate_id": "1102",
      "count": 2
    },
    {
      "cate_id": "81614",
      "count": 1
    },
  ]
}

我想知道如何使用正确的 MongoDB 聚合框架命令实现此目的。谢谢!

你必须在这里使用两个 $group 阶段。首先是 idcate_idcount 文件数量 然后是 id

db.collection.aggregate([
  { "$group": {
    "_id": {
      "id": { "$toLong": "$id" },
      "cate_id": "$cate_id"
    },
    "count": { "$sum": 1 }
  }},
  { "$group": {
    "_id": "$_id.id",
    "categories": {
      "$push": {
        "cate_id": "$_id.cate_id",
        "count": "$count"
      }
    }
  }}
])