2011-02-08 17 views
13

¿Es posible iterar sobre un pymongo Cursor como un par clave-valor como dict? Estoy usando python 2.6 y pymongo 1.9.Iterar mediante PyMongo Cursor como par clave-valor

He intentado esto:

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]) 

Pero me sale el error:

ValueError: too many values to unpack 

Respuesta

15

Probar:

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

este es un fuction en Python solía construir una Respuesta JSON desde un cursor 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 cosas. 1) 'response = {}' sería mucho más claro que 'json.loads ('{}')'. 2) Debes hacer 'por bp en el cursor' porque estás ignorando' idx' de 'enumerate()'. – cpburnz

Cuestiones relacionadas