2011-02-08 12 views
13

Czy można powtórzyć za pomocą pymongo Cursor jako pary klucz-wartość, takiej jak dict? Używam Pythona 2.6 i Pymongo 1.9.Powtarzanie kursorem PyMongo jako parze klucz-wartość

Próbowałem to:

import pymongo 
mongo = pymongo.Connection('localhost') 
mongo_db = mongo['my_database'] 
mongo_coll = mongo_db['my_collection'] 
cursor = mongo_coll.find() 
records = dict([(record_id, record) for record_id, record in mongo_cursor]) 

Ale pojawia się błąd:

ValueError: too many values to unpack 

Odpowiedz

15

Spróbuj:

records = dict((record['_id'], record) for record in cursor) 
-1

to fuction w Pythonie kiedyś zbudować Odpowiedź JSON z kursora MongoDB

def build_contacts_cursor(cursor): 
    ''' Builds a JSON response for a given cursor 
    ''' 
    response = json.loads('{}') 
    response_to_append_to = response['results'] = [] 

    for idx, bp in enumerate(cursor): 
     response_to_append_to.append(bp) 

    return response 
+0

2 rzeczy. 1) 'response = {}' byłoby dużo bardziej przejrzyste niż 'json.loads ('{}')'. 2) Powinieneś zrobić 'dla bp w kursie', ponieważ ignorujesz' idx' z 'enumerate()'. – cpburnz