Как развернуть два массива в Mongodb и спроецировать их отчетливо? - PullRequest
1 голос
/ 03 февраля 2020

Я хочу развернуть два массива в одном документе. Теперь я хочу проецировать их отдельно, как упомянуто ниже, с дополнительным полем, определяющим его тип. Предположим, что если он стирается, то тип должен быть определен как wa sh, а если он установлен, то тип должен быть определен как установленный

Документ имеет следующий формат:

    {
"install":["Date1"]
"wash": ["Date1", "Date2", "Date3"]
}

Вывод, который я хочу получить, следующий:

{
"install": "Date1"
"type": "install"
},
{
"wash": "Date1",
"type": "wash"
},
{
"wash": "Date2",
"type": "wash"
},
{
"wash": "Date3",
"type":"wash"
}

1 Ответ

0 голосов
/ 03 февраля 2020

Эта агрегация возвращает желаемый результат:

db.test.aggregate( [
  { 
      $facet: {
          install: [
              { $unwind: "$install" },
              { $project: { type: "install", install: 1, _id: 0 } }
          ],
          wash: [
              { $unwind: "$wash" },
              { $project: { type: "wash", wash: 1, _id: 0 } }
          ]
      } 
  },
  {
      $project: { result: { $concatArrays: [ "$install", "$wash" ] } }
  }
] )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...