MongoDB Sort 内存问题

0. 问题形容

# pythonclient.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 容许应用磁盘

# pythonclient.aggregate([    {'$match': {}},    {'$sort': {'updatedAt': 1}},    {'$skip': 10000},    {'$limit': 10},], allowDiskUse=True)