各ドキュメントの一連のフィールド値を持つコレクションがあります。これらの 1 つは「座標」と呼ばれます。このフィールドでnullではない要素についてDBにクエリを実行すると、期待どおりに正しい値が返されます。
ただし、Python(Pymongo)で時々このエラーに遭遇します:
if not doc['coordinates']
TypeError: 'NoneType' object has no attribute '__getitem__'
これは、フィールド「座標」がないレコードに遭遇したことを意味しているようです。このフィールドを持つドキュメントを作成したので、存在するはずです。
ただし、このエラーを処理する方法と、このエラーがプログラムを終了させないようにする方法を知りたいです。
これは、適切なクエリを見つける方法です。
cursor = collection.find(
{ "$and" : [
{"term": {"$in": events}},
{ "$or" : [
{"coordinates" : {"$ne": None}},
{"place" : {"$ne" : None}}
]}
]},
{"term" : 1, "coordinates" : 1, "place" : 1, "time_normal" : 1}, tailable = True, timeout = False )
次に、返されたクエリを次のように繰り返し処理します。
while cursor.alive:
try:
doc = cursor.next()
CODE IS HERE TO QUERY DB
except StopIteration:
pass
ありがとう