【发布时间】:2017-06-29 15:26:13
【问题描述】:
我有一个最奇怪的问题。我有这段使用 pymongo 的 python 代码,它作为 celery 的自动任务运行:
query_filter = {'current_data': {'$exists': True}}
record_list = [x['_id'] for x in db.records.find(query_filter, {'_id': 1})]
for i, record_id in enumerate(record_list):
my_record = db.records.find_one({'_id': record_id})
record_data = my_record['current_data']
perform_action(record_data)
它给了我这个错误:
record_data = my_record['current_data']
TypeError: 'NoneType' object has no attribute '__getitem__'
records 集合有 63500 个文档,其中约 1% 达到了 MongoDB 文档最大大小(16 兆字节)的 80%。我有 pymongo 3.4.0 版。你知道这里会发生什么吗?
【问题讨论】:
-
你为什么使用列表理解和
enumerate?为什么不直接遍历x in db.records.find(...)?