我有一个像['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"
]
}
有人可以建议如何实现这一目标。
最佳答案
使用$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
匹配单词边界,因此正则表达式将匹配“非常好的平底鞋”而不是“非常好的平底鞋”。