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
}
}
}
}
我正在使用 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
}
}
}
}