2016-09-03 2 views
0

Die folgende pymongo Abfrage gibt mir alle Werte ich brauche:Pymongo Rückgabewerte nur als Liste

l=list(db.rounds.find({"current_strategy":"PPStrategy4016"},{"myFundsChange":1,"_id": 0})) 

{'myFundsChange': '-0.30000000000000004'}, {'myFundsChange': '0.0'}, {'myFundsChange': '0.0'}, {'myFundsChange': '-0.040000000000000036'}, {'myFundsChange': '-0.08000000000000007'}, {'myFundsChange': '-0.20999999999999996'}, {'myFundsChange': '-0.47'}, {'myFundsChange': '0.0'}, {'myFundsChange': '0.0'}, {'myFundsChange': '-0.040000000000000036'}, {'myFundsChange': '-0.040000000000000036'} 

Aber wie kann ich sagen pymongo mir die Werte zurück nur als Liste (ohne Schlüssel)?

+1

könnte einfacher sein, es zu nachbearbeiten wie '[el [ 'myFundsChange'] für el in db.rounds. find (...)] 'obwohl –

+0

[' $ group'] (https://docs.mongodb.com/manual/reference/operator/aggregation/group/#pipe._S_group) und ['$ push'] (https://docs.mongodb.com/manual/reference/operator/aggregation/push/) die Werte in ein Array mit [aggregate() '] (http://api.mongodb.com/python/current/ api/pymongo/collection.html # pymongo.collection.Collection.aggregate) Methode. – styvane

+0

Ich kann nicht sehen, wie $ group und $ push helfen: https://docs.mongodb.com/manual/reference/operator/aggregation/push/. Hast du irgendeine Erklärung? Vielen Dank – Nickpick

Antwort

1

tun Sie es einfach so:

cursor = collection.aggregate([ 
    {"$match": {"current_strategy": "PPStrategy4016"}}, 
    {"$group": { 
     "_id": None, 
     "myFundsChange": {"$push": "$myFundsChange"} 
    }} 
]) 

Dann können Sie den Cursor verbrauchen eine traditionelle for-Schleife oder einfach mit.

for res in cursor: 
    # do something with the result. 

Beachten Sie, dass das Objekt Cursorenthält ein Dokument hier, weil wir Gruppe von None