MongoDB Atlas-$search v/s$match

MongoDB Atlas-$search v/s$match,mongodb,aggregation-framework,mongodb-atlas,fuzzy-search,mongodb-atlas-search,Mongodb,Aggregation Framework,Mongodb Atlas,Fuzzy Search,Mongodb Atlas Search,我正在使用Node和MongoDB Atlas构建一个web应用程序。我需要实现一个搜索栏,用于在两个特定字段中搜索MongoDB集合。我正在研究构建这个的最佳方法,但是Mongo文档有点让人困惑 提及$search聚合阶段。另一方面,完全不要提及$search阶段 我希望搜索是“模糊的”,并说这应该使用正则表达式来完成,但我在Atlas搜索文档中找不到任何关于$regex操作符的参考。对于上一个任务,我创建了一个聚合管道,在该管道中,我将$match操作符与db.collection.aggr

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

提及
$search
聚合阶段。另一方面,完全不要提及
$search
阶段

我希望搜索是“模糊的”,并说这应该使用正则表达式来完成,但我在Atlas搜索文档中找不到任何关于
$regex
操作符的参考。对于上一个任务,我创建了一个聚合管道,在该管道中,我将
$match
操作符与
db.collection.aggregate()
一起使用。在我看来,
$match
操作符对于模糊搜索栏也应该可以正常工作,因为它允许我使用
$regex
操作符。我相信
$match
还可以利用您在Atlas上为查询创建的任何索引


所以我的问题基本上是-使用
$search
$match
有什么区别?其中一个是否比另一个具有性能/成本优势?或者它们是我完全不知道的不同用例?如果使用
$search
是一种方法,那么如何使查询变得模糊?我将非常感谢您的帮助。

$search
是实现搜索功能的最佳选择。它将产生更准确的结果,它将提供突出显示和自动完成等功能,并且对于这个用例将更有效

在您完成实现的过程中,下面是一些关键步骤

以下是带有模糊匹配的简单查询的外观,默认设置为模糊设置:

{
  $search: {
    "index": <index name>, // optional, defaults to "default"
    "text": {
      "query": "queryText",
      "path": "<fields-to-search>",
      "fuzzy": {
         "maxEdits": 2
       }
    }
  }
}
{
$search:{
“索引”:,//可选,默认为“默认”
“文本”:{
“查询”:“查询文本”,
“路径”:“,
“模糊”:{
“最大编辑”:2
}
}
}
}