MongoDB如何查询数组中至少一个元素含指定子串的文档
MongoDB数组元素包含指定子串的查询方案
你之前用$in的方式无法实现需求,因为$in是精确匹配数组元素,只会查找完全等于"apple"的项,而你需要的是匹配包含"apple"子串的元素。以下是两种可行的解决方案:
方法1:直接使用正则表达式
MongoDB支持直接在查询条件中使用正则表达式,会自动匹配数组中符合正则规则的元素:
// 区分大小写匹配包含"apple"子串的元素 let prods = await Product.find({ items: /apple/ }); // 忽略大小写的匹配(可匹配Apple/APPLE等) let prodsIgnoreCase = await Product.find({ items: /apple/i });
方法2:使用$regex操作符
如果需要更明确的语法,或者结合其他查询选项,可以使用$regex操作符:
// 区分大小写版本 let prodsWithRegex = await Product.find({ items: { $regex: "apple" } }); // 忽略大小写版本,通过$options指定"i"标志 let prodsWithRegexIgnoreCase = await Product.find({ items: { $regex: "apple", $options: "i" } });
以上两种方法都会匹配所有items数组中至少有一个元素包含"apple"子串的文档,你的示例文档中"apples"和"pineapples"都会被正确匹配到。
内容的提问来源于stack exchange,提问作者ololo
相关产品推荐
相关产品推荐

