MongoDB - есть ли способ объединить две коллекции и фильтровать по значениям в поле массива? - PullRequest
1 голос
/ 04 ноября 2019

Я работаю над проектом веб-приложения, который требует от меня запроса к MongoDB для получения некоторых данных. Я действительно новичок в нереляционной БД. В основном у меня есть эти 2 коллекции со следующими схемами:

Имя актера: строка |пол: строка ecc ...

Фильмы _id |год: число |название: строка |актеры: Массив

В частности, этот массив имеет следующую структуру: [0: {0: 'имя', 1: 'фамилия'}, 1: {...} ecc ..]

Мне нужен запрос, который возвращает имя, пол и список фильмов с указанным именем актера, поэтому я попробовал функцию $ lookup, но проблема в том, что я не знаю, как получить доступ к этому, чтобы соответствоватьимя.

db.actors.aggregate([
{
  $lookup:
   {
    from: "movies",
    let: { name: "$_id"},
    pipeline: [
     {
       $match:
        {
          $expr: 
             {
                { $eq: [ "$actors",  "$$name" ] },
             }
        }
     }
    ],

    as: "movies"
}
}
])

Конечно, это не работает, потому что акторы - это вложенный массив. Любые решения?

...