node.js - 如何使用正则表达式扫描集合中的每个文档?
问题描述
我有一个集合,其中包含许多主要由字符串组成的文档,但也有一些数组。
例如:
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)
但这不起作用。
解决方案
你应该可以用 map/reduce 做到这一点。
请参阅获取 mongodb 集合中的所有字段名称?了解如何识别文档中的所有字段。根据需要在每个字段上添加您自己的条件。
推荐阅读
- node.js - 使用 ajax 从网络服务器获取响应
- python - 如何从互联网访问 jupyter-kernel-gateway Rest api?
- nginx - 文件夹中博客的 nginx 重写解决了永久链接而不是文件
- laravel - Laravel 的范围问题
- javascript - 在 Vue.js 中选择不显示选项
- android - 编号选择器在 Recyclerview 中不起作用
- google-sheets - 修改脚本以在每次进行编辑时将数据验证从列表和编辑该数据验证的时间戳复制到新行
- html - 如何从谷歌地图中抓取地址信息?
- sql - 将获取/创建存储过程从一项推广到多项
- c# - C# Windows Forms Spotify API 用户授权