1

我有一个字符串数组,例如['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"
 ]
}

任何人都可以建议如何实现这一目标。

4

1 回答 1

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匹配单词边界,因此正则表达式将匹配'very good flat shoes'但不匹配 ' very good flatshoes'

于 2013-04-09T11:21:08.387 回答