Как объединить строки mongodb в столбцы - PullRequest
1 голос
/ 29 апреля 2020

есть ли способ агрегировать строки в столбцы в Mongodb, вот схема

[{
"_id" : "2020-04-17",
"wares" : [{"ware" : "NYC","total" : 5},{"ware" : "SFO","total" : 10}]
},
{
"_id" : "2020-04-18",
"wares" : [{"ware" : "NYC","total" : 6},{"ware" : "SFO","total" : 12},{"ware" : "CHI","total" : 13}]
}]

Конечный результат должен выглядеть следующим образом

[
 {
   date: '2020-04-17', NYC: 5, SFO: 10
 },
 {
   date: '2020-04-18', NYC: 6, SFO: 12, CHI:13
 }

1 Ответ

2 голосов
/ 29 апреля 2020

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

db.collection.aggregate([
  { "$replaceRoot": {
    "newRoot": {
      "$mergeObjects": [
        { "$arrayToObject": {
          "$map": {
            "input": "$wares",
            "in": {
              "k": "$$this.ware",
              "v": "$$this.total"
            }
          }
        }},
        { "_id": "$_id" }
      ]
    }
  }}
])

MongoPlayground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...