节点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式将匹配“非常好的平底鞋”,但不是“非常好的平底鞋” 。