Получить все документы, свойство которых равно одному из элементов массива

У меня есть модель Post, в схеме которой определено свойство publisher (я использую Mongoose). Свойство publisher представляет собой строку, которая ссылается на имя издателя.

У меня также есть массив с именем sourceNames, который содержит имена всех разных издателей. Я хочу запросить в своей базе данных ВСЕ сообщения, publisher которых соответствует любому из элементов массива в sourceName. Мой текущий запрос выглядит так:

const query = postModel
      .find({ publisher: { $all: sourceNames } })
      .limit(limit)
      .skip(startIndex);

Мой запрос ничего не возвращает, когда я его выполняю. Кто-нибудь знает, возможно ли то, что я пытаюсь сделать, в одном запросе (вместо того, чтобы перебирать sourceNames и делать запрос для каждого отдельного элемента?

🤔 А знаете ли вы, что...
Node.js активно используется для создания серверных приложений на стороне бэкенда в стеке MEAN (MongoDB, Express.js, Angular, Node.js).


1
314
1

Ответ:

Решено

Короткий

Просто замените $all на $in


Expl

  • $all пытается сопоставить массив со всеми элементами вашего массива.

  • $in вместо этого пытается сопоставить строку или массив с единицей в массиве.