聚合管道限制


进入MongoDB中文手册(4.2版本)目录

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

1 结果大小限制

在3.6版中进行了更改: MongoDB 3.6删除了aggregate 命令中返回结果是单个文档的选项。
aggregate命令可以返回游标或将结果存储在集合中。当返回游标或将结果存储在集合中时,结果集中的每个文档都存在BSON文档大小的限制,目前为16兆字节;如果任何单个文档超出了 限制,该命令将产生错误。该限制仅适用于返回的文件;在管道处理过程中,文档可能会超出此大小。db.collection.aggregate()方法返回一个游标。

2 内存限制

管道阶段的内存(RAM)限制为100 MiB(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开始,分析日志消息(profiler log messages)诊断日志消息(diagnostic log messages)包括一个usedDisk ,用来表示是否有任何聚合阶段由于内存限制而将数据写入临时文件。

也可以看看


进入MongoDB中文手册(4.2版本)目录

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读