2017-09-11 8 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( 'place'、{'user': '[email protected]'}) 'です。これは、 "別個の"場所のリストを返します。 –

答えて

3

x['place']はあなたが探しているものです。

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

パーフェクト、時間が過ぎても受け入れます。私は馬鹿のように感じ、それは簡単すぎました。ご協力いただきありがとうございます! – BrettJ

+0

@BrettJすべての初心者に起こります:) –

関連する問題