英文原文地址:https://docs.mongodb.com/v3.2/core/aggregation-pipeline-sharded-collections/。
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。
聚集管道与分片集合
聚集管道支持对分片集合操作。本章描述了聚集管道与分片集合特有的行为。
行为
版本3.2的改动。
如果管道以一个在分片键上的精确$match
开始,整个管道只会在匹配的分片上运行。之前,管道会分割开来,合并的工作会在主分片上完成。
对于必须运行在多个分片上的聚集操作,如果操作不一定需要运行在数据库的主分片上,这些操作将会把结果路由到一个随机的分片上来合并结果,以避免主分片负载过大。$out
阶段和$lookup
阶段需要运行在数据库的主分片上。
优化
当把聚集管道分成两部分的时候,在考虑优化的基础上,分割或确保分片执行尽可能多的阶段。
要查看管道是怎么分割的,在db.collection.aggregate()
方法中包含explain
选项。
不同版本的优化可能会不一样。