MongoDB 查询游标超时

  • Post author:
  • Post category:其他


背景

mongo 里面有 4000w 数据,数据量很大,需要 python 读取清洗处理,插入 mysql 里面,但在读的时候会存在游标超时,还有数据量太大读不出来,直接读是读不了的。

解决办法

在网上先找了游标超时解决办法,大部分都是这样说的:


4种方法解决MongoDB游标超时的问题 | 谢乾坤 | Kingname

但我还有数据量太大读不出来的问题,集合游标超时一起解决的 python 代码:

import pymongo

 # 连接 mongo 的 年度数据集合
 client = pymongo.MongoClient(host='localhost', port=27017)
 db = client.D
 collection = db['D']

count = 0 # 计数
for item in collection.find({},{'_id':0,},no_cursor_timeout=True).batch_size(5000): 
        
    '''
    处理每一个 item 字典
    '''

no_cursor_timeout=True:设置游标不超时

batch_size(5000):每次读 5000 条

这样写虽然会增加 io 时间,见上面链接里面的解说,但相对较为稳定,可以依次处理数据,我运行了一个下午,处理了几百万数据都没有问题。



版权声明:本文为zjkpy_5原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。