使用该aggregate
命令进行的聚合操作具有以下限制。
在3.6版中进行了更改: MongoDB 3.6删除了该aggregate
命令以将其结果作为单个文档返回的选项。
该aggregate
命令可以返回游标或将结果存储在集合中。当返回游标或将结果存储在集合中时,结果集中的每个文档都受到限制,目前为16兆字节;如果任何单个文档超出了
限制,该命令将产生错误。该限制仅适用于退回的文件;在管道处理过程中,文档可能会超出此大小。该
方法返回一个游标。BSON Document Size
BSON Document Size
db.collection.aggregate()
管道阶段的RAM限制为100 MiB(100 * 1024 * 1024字节)。如果阶段超出此限制,则MongoDB将产生错误。要允许处理大型数据集,可以在方法中设置
allowDiskUse选项
aggregate()
。该allowDiskUse选项允许最多聚集流水线作业将数据写入到一个临时文件。以下聚合操作是allowDiskUse选项的例外:这些操作必须在内存限制限制内:
$graphLookup
阶段$addToSet
该$group
阶段中使用的累加器表达式
(从4.2.3、4.0.14、3.6.17版开始)$push
该$group
阶段中使用的累加器表达式
(从4.2.3、4.0.14、3.6.17版开始)如果管道中包括在
操作中遵守allowDiskUse:true的其他阶段aggregate()
,则allowDiskUse:true选项对于这些其他阶段有效。
从MongoDB 4.2开始,事件探查器日志消息和诊断日志消息包括一个usedDisk
指示符,指示是否有任何聚合阶段由于内存限制而将数据写入临时文件。
也可以看看