聚合管道限制
此版本的文档已存档,不再提供支持。要升级5.0部署,请参阅 MongoDB 6.0升级程序。
使用 aggregate
命令进行聚合操作具有以下限制。
结果大小限制
aggregate
命令既可以返回一个游标,也可以将结果存储在集合中。结果集中的每个文档存在 16 MB 的 BSON 文档大小限制。如果任何单个文档超过 BSON 文档大小限制,则聚合会产生错误。该限制仅适用于返回的文档。在管道处理过程中,文档可能会超过此大小。db.collection.aggregate()
方法默认返回一个游标。
阶段数量限制
MongoDB 将单个管道中允许的聚合管道阶段数量限制为 1000 个。
如果聚合管道在解析之前或之后超过阶段限制,您会收到错误消息。
内存限制
每个单独的管道阶段的 RAM 限制为 100 MB。 默认情况下,如果某个阶段超过此限制,MongoDB 会产生错误。 对于某些管道阶段,您可以使用allowDiskUse选项启用聚合管道阶段以将数据写入临时文件,从而允许管道处理占用更多空间。
$search
聚合阶段不限于 100 MB 的 RAM,因为它在单独的进程中运行。
当allowDiskUse为true
时,可能会溢出到磁盘的阶段示例如下:
$sort
当索引不支持排序操作时
注意
管道阶段对文档流进行操作,每个管道阶段接收文档,对其进行处理,然后输出结果文档。
某些阶段在处理完所有传入文档之前无法输出任何文档。这些管道阶段必须将其阶段输出保留在 RAM 中,直到处理完所有传入文档。因此,这些管道阶段所需的空间可能超过 100 MB 的限制。
如果某一 $sort
管道阶段的结果超过此限制,则可考虑添加一个 $limit 阶段。