我有一些这样的文件。
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个项目都显示出来。
如何进行查询?
谢谢
答案 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);