聚合管道和分片集合
聚合管道支持对分片的集合进行操作。 本节介绍特定于聚合管道和分分片的集合的行为。
行为
如果管道以分片键上的确切 $match
开始,并且管道不包含 $out
或 $lookup
阶段,则整个管道仅在匹配的分片上运行。
当聚合操作在多个分片上运行时,结果会被路由到 mongos
进行合并,以下情况除外:
如果管道包含排序或分组阶段,且启用了 allowDiskUse 设置,则合并会在随机选择的分片上运行。
优化
将聚合管道分割为两部分时,管道的分割是为了确保分片执行尽可能多的阶段,并考虑到优化。
要如需查看管道是如何分割的,请在 db.collection.aggregate()
方法中加入 explain
选项。
优化可能因版本而异。