Нужно найти документ по подстроке и сделать аггрегацию с помощью aggregate.lookup() в mongodb используя mongoose

Всем хай. Я ищу докумет с помощью метода Model.find() в mongoose:

ChamWord
     .find({
        word: {
          $regex: body.searchValue,
          $options: 'i',
        },
      })

А также у меня получается сделать аггрегацию, добавив поддокумент, с помощью метода lookup():

ChamWord.lookup({
        from: 'ruwords',
        localField: 'wordId',
        foreignField: 'translateId',
        as: 'translation',
      })

Но я не могу объединить эти два метода и не знаю как это сделать. Мне нужно чтобы после поиска как в первом фрагменте кода я сразу же делал и аггрегацию как во втором фрагмете кода и только после этого получал данные.


Ответы (1 шт):

Автор решения: Esperson

Вопрос решен с помощью $match:

ChamWord.aggregate([
      {
        $match: {
          word: {
            $regex: body.searchValue,
            $options: 'i',
          },
        },
      },
      {
        $lookup: {
          from: 'ruwords',
          localField: 'wordId',
          foreignField: 'translateId',
          as: 'translation',
        },
      },
    ])
→ Ссылка