猫鼬查询标签搜索

时间:2020-04-28 18:45:17

标签: mongodb mongoose mongodb-query

我有一些这样的文件。

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”的项目。不是AND。

因此应该将所有3个项目都显示出来。

如何进行查询?

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式转换数组列表,然后可以使用$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);