我正在使用 Node 和 MongoDB Atlas 构建一个 Web 应用程序。我需要实现一个搜索栏,它将用于在 2 个特定字段中搜索 MongoDB 集合。我正在研究构建它的最佳方法,但 Mongo 文档有点令人困惑。
Atlas Search 的这些文档提到了$search
聚合阶段。另一方面,这些 MongoDB 聚合阶段的文档根本没有提到这个$search
阶段。
我希望搜索是“模糊的”,这个答案说这应该使用正则表达式来完成,但我$regex
在 Atlas Search 文档中找不到任何操作符的参考。对于之前的任务,我创建了一个聚合管道,在其中使用了$match
带有db.collection.aggregate()
. 在我看来,$match
操作符也应该适用于模糊搜索栏,因为它允许我使用$regex
操作符。我相信$match
也可以利用您可能在 Atlas 上为查询创建的任何索引。
所以我的问题基本上是这样的 - using$search
和之间有什么区别$match
?一个是否比另一个提供性能/成本优势?或者它们是否用于我完全缺少的不同用例?如果使用$search
是要走的路,那么如何使查询变得模糊?我将不胜感激任何帮助。
$search
是实现搜索功能的最佳选择。它将产生更准确的结果,它将提供突出显示和自动完成等功能,并且在此用例中的性能更高。
在您完成实施时,这里是docs。
下面是带有模糊匹配的简单查询的样子,使用模糊设置的默认值:
{
$search: {
"index": <index name>, // optional, defaults to "default"
"text": {
"query": "queryText",
"path": "<fields-to-search>",
"fuzzy": {
"maxEdits": 2
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句