Как запросить массив в документе, который содержит указанные c значения - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь запросить поле массива в пн goose с помощью массива.

Код:

const Test = mongoose.model('Test', new mongoose.Schema({ title: [Number] }));

await new Test({title: [20,30,40]}).save() // 1
await new Test({title: [40]}).save() // 2
await new Test({title: [10,30,40]}).save() // 3
await new Test({title: [20,30,40,90]}).save() // 4
await new Test({title: [30,40]}).save() // 5

const queryArray = [20, 30, 40];
const results = await Test.find({ title: queryArray }).lean();
console.log(results);

Я хочу results только вернуть документы, которые queryArray содержат. Поэтому, если в документе есть значение, которое отсутствует в queryResult, этот документ не должен возвращаться.

В приведенном выше коде первый, второй и пятый документы должны возвращаться.

Я думал об использовании $in, но это касается каждого элемента в queryArray, и это не сработает для меня.

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете использовать "$ all" вместо "$ in" .

const results = await Test.find({ title: { $all: queryArray } }).lean();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...