OPTIONS
翻译或纠错本页面

聚合管道和分片集合

聚合管道支持在 分片 集合执行,这一章节讲述了 聚合管道 在分片集合上运行的特点。

特点

在 2.6 版更改.

在分片集合上进行聚合时,聚合管道的操作分成两步:第一步运行在每个分片上,如果在之前的 $match 阶段可以根据片键确定要使用的分片,第一部分将只运行在这些确定的分片上。

第二步包括管道操作剩下的过程,运行在集群的 主分片 上。主分片会合并来自其他分片的结果数据,并利用这些数据完成管道操作剩余的部分,之后将结果返回给 mongos 。在之前的版本中,第二步操作运行在 mongos 上。 [1]

优化

将聚合管道分为两个步骤,极大的方便了对集群的性能做多个方面的优化。

使用 db.collection.aggregate()explain 选项可以获得管道分裂的详细信息。

优化在不同版本之间是不同的。

[1]

如果集群中依然有2.6之前版本的分片,管道操作的第二步依然运行在 mongos 上。