聚合管道支持在业务分片集合。本节描述特定于聚合管道和分片集合的行为。
在版本3.2中更改。
如果管道以分片$match
键上的精确开始,则整个管道仅在匹配的分片上运行。以前,管道将被拆分,并且合并它的工作将必须在主碎片上完成。
对于必须在多个分片上运行的聚合操作,如果这些操作不需要在数据库的主分片上运行,则这些操作会将结果路由到随机分片以合并结果,以避免该数据库的主分片过载。该
$out
阶段和该$lookup
阶段需要在数据库的主分片上运行。
将聚合流水线分为两部分时,将流水线拆分以确保分片在考虑优化的情况下执行尽可能多的阶段。
若要查看如何拆分管道,请explain
在db.collection.aggregate()
方法中包括选项
。
优化可能会在版本之间进行更改。