【发布时间】:2022-01-19 10:51:14
【问题描述】:
我一直在探索 Atlas 搜索并使用其索引对数据进行搜索,但在管道中使用“$search”运算符之前,我想在此之前使用过滤器来缩小数据范围。但是 MongoDB 不允许这样做。在使用 $search 缩小数据范围并提高性能之前,有什么方法可以使用 $match 或任何其他运算符
【问题讨论】:
标签: mongodb mongodb-query
我一直在探索 Atlas 搜索并使用其索引对数据进行搜索,但在管道中使用“$search”运算符之前,我想在此之前使用过滤器来缩小数据范围。但是 MongoDB 不允许这样做。在使用 $search 缩小数据范围并提高性能之前,有什么方法可以使用 $match 或任何其他运算符
【问题讨论】:
标签: mongodb mongodb-query
所以答案是否定的,正如docs中所指定的:
$search 必须是它出现在的任何管道的第一阶段
原因是$search 必须使用“特殊”文本索引atlas search 构建,一旦您将结果加载到内存中,它就不能再使用了。
不幸的是,您没有可以使用的解决方法或“hack”,我建议您考虑一下为什么需要这种用法,因为这听起来有点反模式。
【讨论】: