Mongodb: Найти в другой коллекции, если данные не найдены в первой коллекции - PullRequest
0 голосов
/ 17 апреля 2020

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

Я попытался использовать $ lookup с конвейером агрегации, но каким-то образом это не сработает в данном случае.

Я использую Mon goose здесь (версия 4.10.8)

У меня есть DestinationPage как одна коллекция, где я нахожу документ, соответствующий destinationPage_name , если я не получу данные (верну нулевое значение, если так), тогда я sh найду их в SpecialityPage коллекции, совпадающей с specialityPage_name .

 DestinationPage.aggregate([
        { "$match" : { "destinationPage_name": { $regex: SEARCH_REF_DESTINATION, $options: 'i' } }},
        { "$lookup" : {
            "from" : "SpecialityPage",
            "localField" : "specialityPage_name",
            "foreignField" : { $regex: SEARCH_REF_DESTINATION, $options: 'i' },
            "as" : "data2"
          }
        },

      ]).then(doc => {
        console.log('document', doc);
      })
      .catch(err => {
        console.error("got error : ", err);
      })

Приведенный выше код выдает ошибку как

"The 'cursor' option is required, except for aggregate with the explain argument"

Если я добавлю { cursor:{} } к нему, я не вижу даже консольной печати. ​​

ОПЦИЯ: Я могу проверить данные в одной коллекции, затем, если я не получаю никаких данных, то при обратном вызове я могу проверить другую коллекцию. Однако я не считаю это эффективным способом.

Спасибо.

'# stayhomestaysafe'

1 Ответ

0 голосов
/ 17 апреля 2020

Ваша версия mon goose не совместима с MongoDB v4.10.8.

Вам необходимо выполнить обновление до последней версии v5.9.9

Совместимость версий сервера MongoDB

...