聚合管道限制

在本页面

使用聚合命令的聚合操作具有以下限制。

结果大小限制

Mongodb 3.6版本的改变:MongoDB 3.6 删除聚合命令以将其结果作为单个文档返回的选项。

聚合命令可以返回一个游标或将结果存储集合中。返回游标或将结果存储在集合中时,结果集中的每个文档都受BSON 文件大小限制,目前为 16 兆字节;如果任何单个文档超过BSON 文件大小限制,该命令将产生错误。该限制仅适用于返回的文件;在管道处理期间,文档可能超过此大小。 db.collection.aggregate()方法默认返回游标。

Memory 限制

管道阶段的 RAM 限制为 100M(100*1024*1024字节)。如果某个阶段超出此限制,MongoDB 将产生错误。要允许处理大型数据集,可以在aggregate()方法中设置allowDiskUse选项。allowDiskUse选项允许大多数聚合管道操作可以将数据写入临时文件。 以下聚合操作是allowDiskUse选项的例外; 这些操作必须在内存限制内:

  • $graphLookup阶段

  • $group阶段中使用的$addToSet累加器表达式(从版本4.2.3、4.0.14、3.6.17开始)

  • $group阶段使用的$push累加器表达式(从版本4.2.3、4.0.14、3.6.17开始)

如果管道包含在aggregate()操作中观察allowDiskUse: true的其他阶段,那么allowDiskUse: true选项对这些其他阶段有效。

从MongoDB 4.2开始,如果任何聚合阶段由于内存限制而将数据写到临时文件,则分析器日志消息和诊断日志消息包括一个usedDisk指示器。

[success] 可以看看

$sort and Memory Restrictions$group Operator and Memory

译者:李冠飞

校对:李冠飞

最后更新于