2017-09-11 6 views
1

콜렉션을 반복하고 동일한 이름의 키에서 모든 값을 가져와야합니다. PyMongo 콜렉션 반복

[ 
    { 
     "_id": { 
      "$oid": "59b3824b44e96c07dceba8de" 
     }, 
     "place": "Yellow Stone", 
     "time": "2017-09-08", 
     "user": "[email protected]", 
     "user_go": "yes" 
    }, 
    { 
     "_id": { 
      "$oid": "59b4ea8644e96c37c43be33a" 
     }, 
     "place": "Yosemite", 
     "time": "2017-11-10", 
     "user": "[email protected]", 
     "user_go": "yes" 
    }, 
    { 
     "_id": { 
      "$oid": "59b4ea9144e96c37c43be344" 
     }, 
     "place": "Devils Tower", 
     "time": "2017-09-10", 
     "user": "[email protected]", 
     "user_go": "yes" 
    }, 
] 

은 내가 사용자 이름에 따라 컬렉션에서 모든 장소의 이름을 가져 얼마나 궁금하네요. 나는 이와 비슷한 일을 시도했다 :

data = db.voting.find({'user' : '[email protected]'}) 
data = dumps(data) 

parsed = json.loads(data) 

for x in parsed: 
    for key,value in x.items(): 
     print("values: {}".format(value)) 

당신은 내가 모든 키에 대한 모든 값을 가져 추측 할 수 있듯이, 어떻게 내가 원하는 키에 딱 값을 얻는 방법? 나는 또한 place = parsed[0]['place']을 시도했지만 모든 값이 아닌 첫 번째 "장소"값만 반환합니다. 나는 명백한 무엇인가 놓치고있다라고 확신한다. 그러나 이것은 나의 머리를 감싸는 까다로움을 증명하고있다.

나는 또한 문서를 읽고 있었는데 cursour.forEach을 찾았지만 그것을 사용하는 좋은 예를 찾을 수 없습니다.

+1

아니면 그냥 사용 ['별개의()'(https://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.distinct). 즉 db.voting.distinct ('장소', { '사용자': '사용자 @ gmail.com'})'. 어떤 "별개의"장소의 목록을 반환합니다. –

답변

3

x['place'] 당신이 찾고있는 것입니다.

for x in parsed: 
    place = x['place'] 
    ... # do something with place 
+1

완벽합니다. 시간이 다되면 받아 들일 것입니다. 나는 바보처럼 느껴진다. 너무 쉬웠다. 당신의 도움을 주셔서 감사합니다! – BrettJ

+0

@BrettJ 모든 초보자들에게 일어납니다 :) –