繁体   English   中英

查找字符串中数组中所有出现的元素

[英]Find all occurrences of elements in an array in a string

我的文件类似于以下格式:

IMG1

用户执行搜索时,他们将数组发送到后端。 此数组包含至少一个元素。

假设他们将['javascript']发送到后端。 有没有一种查询MongoDB的方法来查找包含javascript单词的文档?

我尝试过类似

db.find({ body: { $all:['javascript'] } });

但这仅在body也是数组的情况下才有效。 有什么办法可以做到这一点?

您可以将管道分隔的正则表达式模式与关键字列表一起使用,如下所示:

const subStrings = ["javascript", "php", "python"];
const regex = subStrings.join("|");


 db.find ({
   body: { $regex: regex, $options: 'i' }
});

使用$regex运算符,并将字符串中包含的正则表达式传递给它:

db.find({ body: { $regex: ".*javascript.*" }});

您也可以这样做:

db.find({ body: /.*javascript.*/ });
db.find({ body: /javascript/ });

首先,您需要在要搜索的字段上创建文本索引。 如果要搜索所有字段

db.collection.createIndex( { "$**": "text" } )

或者,如果您只想包含几个特定字段,则可以

db.collection.createIndex( { title: "text", body: "text" } )

您也可以添加重量,例如。 在您的情况下,标题的权重应大于说明。

然后,您可以进行如下搜索:

db.collection.find( { $text: { $search: "java javascript python" } } )

这将搜索包含任何或所有这些单词的所有文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM