2016-07-16 7 views
0

파이썬으로 Mongo에서 데이터를 가져옵니다. 모든 문서를 커서에서 배열로 옮깁니다. 그런 다음 문서를 처리하고 객체/사전에 새 속성을 추가하려고 시도하지만 KeyError가 나와 있습니다. mongo에서 반환 한 객체를 수정할 때 Nodejs에서이 동작을 보았고 솔루션에 query.lean(). exec()가있어 일반 객체를 가져 왔습니다. pymongo에는 동등 물이 있습니까?파이썬에서 mongo에서 반환 된 객체에 속성을 추가 할 수 없습니다.

+0

당신은'nontree' 스타일을 사용하므로'몽고> 덤프> 변경> update' 때문에이 실용적인'mongo-hash (mongo-hash)'! 업데이트에 또 다른 '쿼리 필터'가 포함되어 있다면 큰 문제가 발생합니다. 확인 : http://stackoverflow.com/questions/18363472/mongoose-lean-query-virtuals-not-showing – dsgdfg

+0

이해가 안됩니다. 쿼리를 작성하고 데이터를 받았습니다. 이제는 내 프로그램에서 그것을 조작하려고합니다. DB 자체를 아직 업데이트하지 않았습니다. – user137717

+0

은'jsonID'에서 작동하므로'_id'를 정의합니까? https://docs.mongodb.com/manual/reference/method/db.collection.update/ @ user137717 – dsgdfg

답변

0

dict에 새 키를 설정할 때 KeyError가 발생하지 않습니다. 뭔가 잘못하고있는 것을 의미합니다. KeyError를가 발생할 때

은 참조 : https://stackoverflow.com/a/10116540/4273834

그냥 요점을 되풀이하려면 다음을 KeyError를 제기하지 않는 당신이 키를 설정하려고하지만 경우 오히려 존재하지 않는 키에 대한 가치를 얻을하려고합니다.

cursor = col.find({}) 
my_list = list(cursor) 
my_list[0]['added_field'] = 'whatever' 

그냥 보조 노트를 : 여기에

가 작동하는 코드입니다 목록 (커서) 파이썬에서 데이터를 처리하는 방법을 방법이 아니다. 권장되는 방법은 직접 커서를 통해 루프입니다 (목록이 몇 가지 특별한 이유 ...가 아닌 경우) :

for doc in cursor: 
    doc['new_key'] = 'test' 
    do_whatever_you_want_with_the_doc(doc) 
관련 문제