292: QueryExceededMemoryLimitNoDiskUseAllowed(错误代码 292)
MongoDB含义
查询或聚合阶段超出了允许的内存限制(默认 100 MB),并且由于不允许写入磁盘而失败。通常出现在 sort 或 group 阶段。
原因
对未建索引的大量数据进行内存排序、大型 $group/$sort 聚合阶段、非常大的中间结果集、allowDiskUse:false 设置。
解决方法
在聚合中使用 allowDiskUse:true 选项允许溢出到磁盘:db.collection.aggregate(pipeline, {allowDiskUse:true})。为排序字段建立索引以减少内存使用。在管道中尽早用 $match 过滤以减少处理的数据量。必要时对结果分页。在 MongoDB 6.0+ 中,大多数情况下默认启用磁盘使用。