Итерация через PyMongo Cursor в качестве пары ключ-значение

Можно ли перебирать pymongo Cursor в качестве пары ключ-значение, например a dict? Я использую python 2.6 и pymongo 1.9.

Я пробовал это:

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

Но я получаю ошибку:

ValueError: too many values to unpack

Ответы

Ответ 1

Try:

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

Ответ 2

это fuction в python, который я использовал для создания ответа JSON от курсора 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