【发布时间】:2021-06-07 21:59:04
【问题描述】:
我正在使用 Node 和 MongoDB Atlas 构建一个 Web 应用程序。我需要实现一个搜索栏,它将用于在 2 个特定字段中搜索 MongoDB 集合。我正在研究构建它的最佳方法,但 Mongo 文档有点令人困惑。
These docs for Atlas Search 提及 $search 聚合阶段。另一方面,these docs for MongoDB Aggregation Stages 根本没有提到$search 阶段。
我希望搜索“模糊”,this answer 说这应该使用正则表达式来完成,但我在 Atlas Search 文档中找不到$regex 运算符的任何参考。对于之前的任务,我创建了一个聚合管道,其中我使用了 $match 运算符和 db.collection.aggregate()。在我看来,$match 运算符也应该适用于模糊搜索栏,因为它允许我使用 $regex 运算符。我相信$match 也可以利用您可能在 Atlas 上为您的查询创建的任何索引。
所以我的问题基本上是这样的 - 使用 $search 和 $match 有什么区别?一种是否比另一种提供性能/成本优势?还是它们用于我完全缺少的不同用例?如果使用$search 是要走的路,如何使查询变得模糊?如有任何帮助,我将不胜感激。
【问题讨论】:
标签: mongodb aggregation-framework mongodb-atlas fuzzy-search mongodb-atlas-search