【问题标题】:MongoDB Atlas - $search v/s $matchMongoDB Atlas - $search 与 $match
【发布时间】: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


    【解决方案1】:

    $search 是实现搜索功能的最佳选择。它将产生更准确的结果,提供突出显示和自动完成等功能,并且在此用例中性能更高。

    在您完成实施时,这里是docs

    这是一个带有模糊匹配的简单查询的样子,模糊设置的默认值:

    {
      $search: {
        "index": <index name>, // optional, defaults to "default"
        "text": {
          "query": "queryText",
          "path": "<fields-to-search>",
          "fuzzy": {
             "maxEdits": 2
           }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2021-06-01
      • 2018-12-31
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      相关资源
      最近更新 更多