英文原文地址:https://docs.mongodb.com/v3.2/core/aggregation-pipeline-limits/。
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。
聚集管道的限制
用aggregate
命令的聚集操作有如下限制:
结果大小限制
版本2.6的改动。
从MongoDB 2.6起,aggregate
命令可以返回一个游标,或者把结果保持在集合里。当返回一个游标或者把结果保存在集合中时,结果集中的每一个文档的大小受限于BSON文档大小,当前是16M。如果有单个文档超出BSON文档大小限制,该命令会产生一个错误。该限制只适用于返回的文档,在管道处理过程中,文档可以超出这个大小。从MongoDB 2.6起,db.collection.aggregate()
默认返回一个游标。
如果不指定游标选项,或者把结果保存在一个集合中,aggregate
命令返回单个包含了结果集所有字段的BSON文档。这样的化,如果结果集的大小超出了BSON文档大小限制,该命令就会产生一个错误。
早期版本的aggregate
命令只能返回一个包含结果集的BSON文档,如果结果集的总大小超出了BSON文档大小限制,将会产生一个错误。
内存限制
版本2.6的改动。
管道阶段有内存大小100M的限制。如果有一个阶段超出了这个限制,MongoDB将会产生一个错误。要处理大的数据集,使用allowDiskuse
选项来允许聚集管道阶段把数据写入到临时文件中。