MongoDB查询结果数组的最大允许大小是多少?
MongoDB 查询结果大小限制说明
首先明确核心结论:你举例的查询返回400条单条大小1MB的文档、总大小400MB的场景,不会触发MongoDB的服务端错误。
具体的规则如下:
- 你提到的16MB是单个BSON文档的大小上限,仅作用于单个独立存储的文档,和查询返回的结果集总大小无关。
- 普通
find查询的单次批返回(batch)存在两个默认阈值:单批最多返回1000条文档,或者单批总大小不超过16MB,哪个先触发就按哪个返回。驱动会自动处理游标批量拉取的逻辑,你正常遍历游标时,后续批次的数据会自动加载,不需要手动操作,整个结果集的总大小没有服务端层面的硬限制。 - 聚合操作的默认限制是单个结果文档不能超过16MB,如果你需要返回大量聚合结果,开启
allowDiskUse: true选项并使用游标接收结果,即可突破单文档限制,支持返回更大的结果集。 - 只有当你在客户端手动将整个游标结果一次性加载到内存中(比如shell中调用
toArray()方法)时,才可能因为结果集总大小超过客户端内存上限抛出错误,这属于客户端内存限制,而非MongoDB服务端的规则。
补充说明:MongoDB 3.2之前的老旧版本中,聚合操作默认返回的整个结果集存在16MB的上限,目前主流维护的新版本均已移除该限制。
内容的提问来源于stack exchange,提问作者J.E.C.
相关产品推荐
相关产品推荐

