Как объединить вывод результатов одного запроса с другим запросом inuput в версии mongodb 3.6.8 - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть две коллекции в mongodb, которые называются «уведомления» и «трансляция». Я пытаюсь получить подробную информацию о коллекции «уведомлений», задав некоторые условия, указанные ниже.

Сценарий-1:

db.notification.find({"notificationId":"12345","incdTempType":"MultiPhase"}).toArray();

Вывод вышеуказанного запросабудет иметь вид

Now the output of above query will  be as

Теперь я хочу дать имя этому выходному массиву как «Многофазный» вместо массива по умолчанию. Поэтому я попробовал это, используя $ project , но мне это не удалось.

Сценарий-2: Теперь scheduleID в массиве, т. Е. Выходные данные script1 должны совпадать с scheduleID в "broadcast" collection. Я сделал это, присоединившись к вышеуказанному запросу сценария-1 с использованием агрегата и присоединившись к коллекции broadcast , используя $ lookup . Выход этого сценария-2 должен быть назван «broadcast» . Для чего я попытался описанным ниже способом.

db.notificationBody.aggregate([
    { $match :{"notificationId":"1234","templateType":"Incident","incdTempType":"MultiPhase"} 
  },
    {
     $lookup:
       {
         from: "broadcastDetails",
         localField: "scheduleId",
         foreignField: "scheduleId",
         as: "broadCast_array"
       }
  },
 {        
    "$unwind":"$broadCast_array"
  },
  {$project : {"_id":0,"broadCast_array": 1}}  
]);

Но указанный выше запрос, который я написал, не выполнил мое требование к тому, что я пытаюсь. Наконец, мой желаемый результат после слияния выходов сценария-1 и сценария-2 должен быть таким, как

мой окончательный результат:

object 
{
  "_id": "5d149e84c22d5075210e3879",
  "notificationId": "1234",
  "incdTempType":"MultiPhase",
  "deleveried_to": [
        {
          "_id": "5d149eacc22d506067704e87",
          "scheduleId": "6789"
        },
        {      
         "_id": "5d149eabc22d506067704e85",
         "scheduleId": "a12fd515fb36574de81492d8ec2b41f5"
        }

   ]
   "multiphase":[
     {
        "_id": "5d149f93c22d5075f17d497b",
        "notificationId": "1234",
        "phaseTitle": "Backend Check"
     },
     {
      "_id": "5d149f93c22d5075f17d497b",
      "notificationId": "1234",
      "phaseTitle": "Frontend Check",
     }
    ]
};

Here is the JSON view of above output

Может кто-нибудь подсказать мне, как мне добиться окончательного результата?

...