在 MongoDB v6 或更高版本中,可以对多个视图进行聚合查询吗?

问题描述 投票:0回答:1

如果我必须执行一个聚合查询,它可以有第一个 $match 阶段,如下所示:

$match:{
$OR:[query1, query2, query3...]
}

为查询 1、2、3 ... 编写单独的视图,然后编写聚合查询来组合它们会更好(就性能而言)吗?

这可以在聚合查询中执行吗?

database mongodb performance query-optimization
1个回答
0
投票

都不是,也不是;您不能基于多个视图进行聚合,我认为这不会提高性能。

使用当前形式,您查询集合一次,理想情况下有索引支持查询。如果您要基于多个视图进行聚合,则必须多次查询集合。

从技术上讲,您可以在聚合中查询集合并为其他

$lookup
条件添加
$or
阶段,但由于
$lookup
是更昂贵的阶段之一,这既不会带来更好的性能,也不会如果您或其他人在一段时间后查看聚合管道,会更容易理解。

但是,如果条件仅基于文档的内容(而不是基于当前时间),您可以做的是预先计算

$or
的结果并将其存储在文档的属性中)。您可以创建一个部分索引,仅包含满足条件的文档,以支持聚合并减少索引大小。

© www.soinside.com 2019 - 2024. All rights reserved.