节点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式将匹配“非常好的平底鞋”,但不是“非常好的平底鞋” 。
- .NET开发人员探索NodeJS,MongoDB,AngularJS和ExpressJS
- 预览失败 – Visual Studio在发布时会查找打印文件,即使它们不包含在内。
- 在Visual Studio中未安装的依赖项
- 你用什么来使JavaScript更像C#一样?
- 从C#.Net调用Node.JS
- OpenAM,OpenId,REST API,内部应用程序:我如何连接它们?
- SignalR + Node WebKit / Node在通过身份validation时无法通过Websocket进行连接
- iisnode 401消息返回iis页面
- 实时应用程序 – asp.net替代node.js和socket.io