좌표 필드에 경도/위도 정보가없는 레코드를 수집하려고합니다. Google의 geocode()
메소드를 사용하여 좌표로 변환 할 위치 정보가있는 레코드를 선택한 다음 이전에 null
이었던 coordinates
필드의 새 값을 업데이트하려고합니다.MongoDB의 필드를 새로운 값으로 업데이트하는 방법
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
감사
'coll'은 모자이크 컬렉션입니까? – JohnnyHK
@JohnnyHK, 예'coll'은 출전자가됩니다. – user94628
확인해 주시면 그에 대한 업데이트 된 답변을 참조하십시오. – JohnnyHK