首页 > 解决方案 > 如何使用正则表达式扫描集合中的每个文档?

问题描述

我有一个集合,其中包含许多主要由字符串组成的文档,但也有一些数组。

例如:
field1: 'string'
field2: 'string'
field3: 'array'
等等。

我想搜索并找到所有出现“关键字”的文档。

我尝试了一个正则表达式,但不知道如何让它在每个文档的每个字段上运行。

我做到了:Model.find({field1: {$regex: ${keyword}, $options: 'mi'}})这适用于那个领域。所以我然后尝试创建一个过滤器以传递给 find(),如下所示:

const filter = {field1: {$regex: ${keyword}, $options: 'mi'}, field2: {$regex: ${keyword}, $options: 'mi'}, field3: {$regex: ${keyword}, $options: 'mi'},etc.}

然后我像这样通过了:Model.find(filter)但这不起作用。

标签: node.jsmongodbmongoose

解决方案


你应该可以用 map/reduce 做到这一点。

请参阅获取 mongodb 集合中的所有字段名称?了解如何识别文档中的所有字段。根据需要在每个字段上添加您自己的条件。


推荐阅读