2017-06-28 16 views
0

私は最も奇妙な問題があります。私はpymongoを使用したPythonコードのこの部分を持って、そしてどのセロリと自動タスクとして実行:MongoDBは既存の文書を見つけることができません

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を持っています。ここで何が起こっているのか知っていますか?

+0

なぜリストの理解と '列挙'を使用していますか?なぜ 'x in db.records.find(...)'を反復処理しないのですか? – Alex

答えて

0

明らかに、答えは非常に簡単で簡単です。プログラムは、ユーザーがレコードを削除しても、それらを照会するのに十分な時間がかかります。確かではありませんが、本当のようです。

0

「レコード」コレクションから、次に「レコード」コレクションからクエリを実行します。それはタイプミスですか?もしそれがあなたのバグの原因なら、存在しないコレクションの "find_one"はNoneを返します。

+0

ありがとう、もちろんそれはタイプミスでした。 – Leukonoe