Многоуровневый поиск агрегатов в БД Монго - PullRequest
1 голос
/ 15 мая 2019

Итак, вот моя упрощенная структура данных:

Тест (тест):

[{
   _id:1,
   name:"test1"
}]

Расписание испытаний (test_scheduled):

[{
   _id:2,
   testId:1,
   batchIds:[1,2]
}]

Пакет (партия):

[{
    _id:1,
    name:"batch 1" 
},{
    _id:2,
    name:"batch 2"
}]

Теперь мне нужно, чтобы результат выглядел следующим образом:

{ // Test
    _id:1,
    name:"test1",
    test_scheduled:[{ // test scheduled
       _id:2,
       batches:[{ // batches
          _id:1,
          name:"batch 1"
       },{
          _id:2,
          name:"batch 2"
       }]
    }]
}

Я могу достичь поиска первого уровня, используя это:

 [ // querying test collection
  {
    $lookup:{
      from: "tests_scheduled",
      localField: "_id",
      foreignField: "testId",
      as: "tests_scheduled"
    }
  },
  {
    $match:{
      _id:new DB.Mongo.ObjectID(testId)
    }
  }
]

Но я не могу понять, как расширить запрос, чтобы получить поиск второго уровня, чтобы получить имена пакетов в том же запросе.

Спасибо за вашу помощь

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