搜索前使用其他聚合运算符

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 视图聚合中使用 $gt 运算符

MongoDb 聚合 $match 错误:“参数必须是聚合管道运算符”

尝试使用 $avg 计算平均值并得到:参数必须是聚合管道运算符

pandas聚合和分组运算之groupby