共计 472 个字符,预计需要花费 2 分钟才能阅读完成。
MongoDB Sort 内存问题
0. 问题形容
# python
client.find(filter_).sort('updatedAt', sort_).skip(skip_).limit(limit_)
在 MongoDB 分页查问时, 因为排序的数据太大会有内存问题. 有三种解决方案
1. 设置排序字段索引
db.getCollection('col').createIndex({"updatedAt": 1})
2. 进步数据库排序的内存下限
db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: 104857600})
3. 更换 aggregate 进行查问 (最优计划)
更换 aggregate 进行查问, 并设置 allowDiskUse 为 True 容许应用磁盘
# python
client.aggregate([{'$match': {}},
{'$sort': {'updatedAt': 1}},
{'$skip': 10000},
{'$limit': 10},
], allowDiskUse=True)
正文完