mongodb - 溢出排序阶段缓冲数据使用量超过内部限制

标签 mongodb mongodb-query mongodb-indexes

使用代码:

all_reviews = db_handle.find().sort('reviewDate', pymongo.ASCENDING)
print all_reviews.count()

print all_reviews[0]
print all_reviews[2000000]

计数打印 2043484,它打印 all_reviews[0]

但是在打印 all_reviews[2000000] 时,我得到了错误:

pymongo.errors.OperationFailure: database error: Runner error: Overflow sort stage buffered data usage of 33554495 bytes exceeds internal limit of 33554432 bytes

我该如何处理?

最佳答案

您的内存排序遇到了 32MB 的限制:

https://docs.mongodb.com/manual/reference/limits/#Sort-Operations

为排序字段添加索引。这允许 MongoDB 按排序顺序将文档流式传输给您,而不是尝试将它们全部加载到服务器上的内存中并在将它们发送到客户端之前在内存中对其进行排序。

关于mongodb - 溢出排序阶段缓冲数据使用量超过内部限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023622/

相关文章:

node.js - Docker容器中的Node.js应用尝试连接到其他Docker容器中的mongodb时出错

mongodb - 如何在 mongo 聚合 $group $cond 中使用 $in 或 $nin

mongodb - 针对计数器字段构建索引

javascript - 设置自己的 mongoose schema _id 属性

node.js - Mongoose withTransaction 仅部分执行

spring - 在 Spring Boot 中使用嵌入式 MongoDB 测试 @Transactional

perl - 如何在不对 MongoDB 的 $in 进行硬编码的情况下动态提供列表?

mongodb - 在 $sort 聚合管道之后向文档添加字段,该管道使用 MongoDb 聚合将其索引包含在排序列表中

Mongodb 地理空间索引,2d 与 2dsphere

c# - 使用 Azure DocumentDB 的 MongoDB Indexes.CreateOneAsync 异常