MongoDB 聚合管道限制

本文将介绍 MongoDB 聚合管道限制

使用聚合命令进行聚合操作有以下限制。

结果大小限制

在版本3.6中更改:MongoDB3.6 删除聚合命令将其结果作为单个文档返回的选项。

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

内存限制

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

  • $graphLookup 阶段

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

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

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

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

如果在胜利前却步,往往只会拥抱失败;如果在困难时坚持,常常会获得新的成功。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号