座標フィールドに経度/緯度情報がないコレクション内のレコードを調べようとしています。Google の方法を使用して、位置情報を持つレコードを選択して座標に変換し、フィールドgeocode()
の新しい値を更新しています。これは以前は.coordinates
null
メソッドを使用しfind()
て、関連するレコードを取得していますが、このコード ブロックは実行されていないようです。つまり、レコードが座標情報で更新されていません。これはコードです:
cursor = coll.find(
{"$and": [
{"coordinates": {"$type":10}},
{"place": {"$ne": None}}
]},
{"coordinates": 1, "place": 1, "time_normal": 1, "_id": 1}, tailable = True, timeout = False)
while cursor.alive:
counter=0
g = geocoders.Google()
try:
doc = cursor.next()
current_id = doc['_id']
counter+=1
print doc
placeName = doc['place']['full_name']
loc = g.geocode(placeName)
coll.update({"_id" : current_id},{"$set": {"coordinates": loc[1]}})
print doc
time.sleep(0.15)
except (ValueError, geocoders.google.GQueryError):
pass
except StopIteration:
break
フィールドが更新されない理由がわかりません。私はそれprint counter
が0を返すことに気づいています。
ありがとう