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