文档菜单
文档首页
/
MongoDB 手册
/ /

聚合管道限制

在本页中

  • 结果大小限制
  • 阶段数量限制
  • 内存限制

使用aggregate 命令有以下限制。

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

MongoDB 对单个管道中允许的聚合管道阶段数量限制为1000。

如果聚合管道在解析前后超过阶段限制,您将收到一个错误。

从MongoDB 6.0开始,allowDiskUseByDefault参数控制是否默认将需要超过100兆内存来执行的管道阶段写入磁盘上的临时文件。

  • 如果将allowDiskUseByDefault设置为true,则默认情况下,需要超过100兆内存来执行的管道阶段将写入磁盘上的临时文件。您可以使用{ allowDiskUse: false }选项禁用特定findaggregate命令写入磁盘的临时文件。

  • 如果将allowDiskUseByDefault设置为false,则默认情况下,需要超过100兆内存来执行的管道阶段将引发错误。您可以使用{ allowDiskUse: true }选项为特定findaggregate启用写入磁盘的临时文件。

聚合$search聚合阶段不受100兆RAM的限制,因为它在单独的进程中运行。

allowDiskUsetrue时,可以写入磁盘的临时文件的阶段示例包括

注意

管道阶段在文档流上操作,每个管道阶段接收文档,处理它们,然后输出结果文档。

某些阶段在处理所有传入的文档之前不能输出任何文档。这些管道阶段必须将它们的阶段输出保留在RAM中,直到所有传入的文档都被处理。因此,这些管道阶段可能需要的空间超过100 MB限制。

如果您的某个$sort管道阶段的结果超出了限制,请考虑添加一个$limit阶段

性能分析日志消息和诊断日志消息中包含一个usedDisk指示器,如果任何聚合阶段由于内存限制而将数据写入临时文件。

返回

优化