Группа Mongodb, а затем подгруппа - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть несколько документов на монго, таких как:

{

  "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]
         }
    ]
}

Я полностью застрял на этом, любая помощьприветствуется.

Brugia.

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете попробовать ниже агрегации

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 }}
])
...