Mon goose запрос для поиска тегов - PullRequest
2 голосов
/ 28 апреля 2020

У меня есть несколько подобных документов.

let apple = {
    id: 1,
    tags: ["red", "yellow", "fruit"],
};
let pear = {
    id: 2,
    tags: ["yellow", "brown", "fruit"],
};
let tomato = {
    id: 3,
    tags: ["red", "green", "vegetable", "small"],
};

Я хочу найти элементы, содержащие "re", "fru" или "yel". НЕ И.

Так должно быть показано все 3 элемента.

Как сделать запрос?

Спасибо

1 Ответ

2 голосов
/ 28 апреля 2020

Вы можете преобразовать список массивов с помощью регулярного выражения, а затем использовать оператор $in.

let filter = { tags: ["re", "fru", "yel"] };
filter.tags = { $in: filter.tags.map(t => new RegExp(t)) };
console.log(filter) // { tags: { '$in': [ /re/, /fru/, /yel/ ] } }

const data = await Order.find(filter);
...