我有一个字符串数组,例如['flat','平底鞋','shoes','black Shoes']
。
mongo 集合有一个名为“KeyWords
”的字段,它是一个字符串。
我需要编写一个查询来获取包含字符串数组中任何项目的“KeyWords
”元素。
示例集合
{
"KeyWords" : [
"MEN'S SMART SHOES- FIREBACK LEATHER SLIP ON SHOES TAN",
"G670",
"SMART SHOES",
"FIREBACK SHOES",
"SHOES"
]}
{
"KeyWords" : [
"MEN'S SMART SHOES- FIREBACK LEATHER SLIP ON SHOES TAN",
"G670",
"SMART SHOES",
"FIREBACK SHOES",
"SHOES"
]
}
任何人都可以建议如何实现这一目标。
最佳答案
使用 $in
进行精确匹配:
var keywords = ['flat','flat shoes','shoes','black shoes'];
YourModel.find({ KeyWords: { $in : keywords } }, ...);
对于子字符串匹配,您可以使用正则表达式查询:
var regexp = new RegExp("\\b(?:" + keywords.join("|") + ")\\b", "i"); // "i" means case insensitive
YourModel.find({ KeyWords : regexp }, ...);
\b
匹配单词边界,因此正则表达式将匹配'very good flat Shoes',但不匹配'very good flatshoes'。
关于asp.net - Node Js - Mongo 动态查询字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899514/