聚合管道限制


进入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版本)目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值