我正在使用Node和MongoDB地图集构建一个web应用程序。我需要实现一个搜索栏,它将用于在2个特定字段中搜索MongoDB集合。我正在做一些关于构建这个的最佳方法的研究,但是Mongo文档有点令人困惑。
These docs for Atlas Search提到了$search聚合阶段。另一方面,these docs for MongoDB Aggregation Stages根本没有提到$search阶段。
我希望搜索是“模糊的”,this answer说这应该使用正则表达式来完成,但我在$regex搜索文档中找不到任何关于模糊操作符的引用。对于前一个任务,我创建了一个聚合管道,在其中我使用了带有db.collection.aggregate()的$match操作符。在我看来,由于允许我使用$regex操作符,$match操作符对于模糊搜索栏也应该可以很好地工作。我相信$match还可以利用您在Atlas上创建的任何索引来进行查询。
所以我的问题基本上是这样的--使用$search和$match有什么区别?其中一种是否比另一种提供性能/成本优势?或者它们适用于不同的用例,而我完全忽略了这些用例?如果使用$search是可行的,那么如何使查询变得模糊呢?如果有任何帮助,我将不胜感激。
发布于 2021-03-10 08:34:01
$search是实现搜索功能的最佳选择。它将产生更准确的结果,它将提供突出显示和自动完成等功能,并且在此用例中性能更好。
在您完成整个实现过程中,下面是docs。
下面是一个具有模糊匹配的简单查询的外观,其中包含模糊设置的默认值:
{
$search: {
"index": <index name>, // optional, defaults to "default"
"text": {
"query": "queryText",
"path": "<fields-to-search>",
"fuzzy": {
"maxEdits": 2
}
}
}
}https://stackoverflow.com/questions/66556615
复制相似问题