Mongodb组然后再分组

时间:2018-09-22 01:12:58

标签: mongodb mongodb-query aggregation-framework

我有一些像这样的mongo文档:

{

  "worker_id" : "x",
  "minutes": [
     {"min" : 10, "capacity" : 15},
     {"min" : 10, "capacity" : 12},
     {"min" : 12, "capacity" : 13},
     {"min" : 12, "capacity" : 12}
  ]
}

我想将这些文档转换成这样的东西:

{
    "worker_id" : "x",
    "minutes" : [
         {
             "min" : 10,
             "capacities": [15,12]
         },
         {
             "min" : 12,
             "capacities": [13,12]
         }
    ]
}

我对此一无所知,不胜感激。

布鲁日。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下汇总

db.collection.aggregate([
  { "$unwind": "$minutes" },
  { "$group": {
    "_id": { "worker_id": "$worker_id", "minutes": "$minutes.min" },
    "capacities": { "$push": "$minutes.capacity" }
  }},
  { "$group": {
    "_id": "$_id.worker_id",
    "minutes": {
      "$push": {
        "min": "$_id.minutes",
        "capacity": "$capacities"
      }
    }
  }},
  { "$project": { "worker_id": "$_id", "minutes": 1, "_id": 0 }}
])