节点Js – 从string数组中dynamic查询Mongo

我有一个string数组,像['flat','flat shoes','shoes','black shoes']

而mongo集合有一个叫做“ KeyWords ”的字段,它是一个string。

我需要编写一个查询来获取包含string数组中任何项的“ 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" ] } 

有谁可以build议如何做到这一点。

使用$in进行完全匹配:

 var keywords = ['flat','flat shoes','shoes','black shoes']; YourModel.find({ KeyWords: { $in : keywords } }, ...); 

对于子string匹配,可以使用正则expression式查询:

 var regexp = new RegExp("\\b(?:" + keywords.join("|") + ")\\b", "i"); // "i" means case insensitive YourModel.find({ KeyWords : regexp }, ...); 

\b匹配一个字边界,所以正则expression式将匹配“非常好的平底鞋”,但不是“非常好的平底鞋”