聚合管道和分片集合

在本页面

聚合管道支持对sharded集合的操作。本节介绍特定于aggregation pipeline和分片集合的行为。

Behavior

在版本 3.2 中更改。

如果管道在分片键上以精确的$match开头,则整个管道仅在匹配的分片上运行。以前,管道会被拆分,并且合并它的工作必须在主碎片上完成。

对于必须在多个分片上运行的聚合操作,如果这些操作不需要在数据库的主分片上运行,则这些操作会将结果路由到随机分片以合并结果,从而避免该数据库的主分片过载。 $out阶段和$lookup阶段需要在数据库的主分片上运行。

Optimization

将聚合流水线分为两部分时,将流水线拆分以确保分片在考虑优化的情况下执行尽可能多的阶段。

若要查看管道的拆分方式,请在db.collection.aggregate()方法中包括explain选项。

优化可能会在版本之间进行更改。