MongoDB 地图集 - $search v/s $match

MongoDB Atlas - $search v/s $match

我正在使用 Node 和 MongoDB Atlas 构建一个网络应用程序。我需要实现一个搜索栏,它将用于在 2 个特定字段中搜索 MongoDB 集合。我正在研究构建它的最佳方法,但 Mongo 文档有点令人困惑。

These docs for Atlas Search mention a $search aggregation stage. On the other hand, these docs for MongoDB Aggregation Stages 根本没有提到 $search 阶段。

我希望搜索为 'fuzzy', 说这应该使用正则表达式来完成,但我在阿特拉斯搜索文档。对于之前的任务,我创建了一个聚合管道,其中我使用 $match 运算符和 db.collection.aggregate()。在我看来,$match 运算符也应该适用于模糊搜索栏,因为它允许我使用 $regex 运算符。我相信 $match 也可以利用您可能在 Atlas 上为查询创建的任何索引。

所以我的问题基本上是这样的 - 使用 $search$match 有什么区别?一个比另一个提供 performance/cost 好处吗?还是它们用于我完全缺少的不同用例?如果使用 $search 是可行的方法,那么如何使查询变得模糊?如果有任何帮助,我将不胜感激。

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

在您完成实施过程中,这里是 docs

下面是带有模糊匹配的简单查询,使用默认的模糊设置:

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