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 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号