我有一个像['flat','flat shoes','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"
]
}
任何人都可以建议如何实现这一目标。
答案 0 :(得分:2)
使用$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
匹配单词边界,因此正则表达式将匹配'非常好的平底鞋',但不匹配'非常好的flatshoes'。