【问题标题】:Mongoose query for tags search用于标签搜索的 Mongoose 查询
【发布时间】:2020-05-07 19:53:38
【问题描述】:

我有一些这样的文件。

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 个项目。

如何查询?

谢谢

【问题讨论】:

  • 如果它有效,你可以试试这个 db.fruteCollection.find( { tags: { $elemMatch: { $or:[ $regex : ".*re.*", $regex : ".* fru.*", $regex : ".*yel.*"] } } }) 。告诉我。
  • 这能回答你的问题吗? unable to use regex in $in operator in mongodb

标签: mongodb mongoose mongodb-query


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2016-09-10
    • 2011-07-14
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2015-11-06
    相关资源
    最近更新 更多