asp.net - Node Js - Mongo 动态查询字符串数组

标签 asp.net node.js mongodb mongoose

我有一个字符串数组,例如['flat','平底鞋','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 匹配单词边界,因此正则表达式将匹配'very good flat Shoes',但不匹配'very good flatshoes'

关于asp.net - Node Js - Mongo 动态查询字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899514/

相关文章:

c# - 将新 child 添加到现有 child

javascript - 如何使用node.js将blob移动到Azure中的子目录中

c# - MongoDB + NoRM- 并发和集合

c# - 使用 JavaScript 将 visible 属性设置为 false 时删除空白区域

c# - 无法更改所选选项

python - 为当前目录提供服务的简单文件服务器

node.js - 如何暂时在不同的端口运行 Node 应用程序?

node.js - 如何在查询中使用 $push 将数据插入子文档,而不是检索文档并将其保存回来

python - 如果值不匹配则更新文档

ASP.NET 密码强度正则表达式