Как мне найти имя (ключ) значений в коллекции во время итерации с помощью PyMongo?

При использовании курсора для итерации подобной коллекции

import pymongo
cursor = pymongo.Connection().test_db.test_collection.find()
for item in cursor:
    print item
    #this will print the item as a dictionary

возвращаются только значения. Я ищу способ получить доступ к имени значения.

Я нашел похожий метод под названием getCollectionNames () < / a> однако он используется для возврата имени каждой коллекции в базе данных.


Быстрое [хакерское] исправление: сохраните имя коллекции внутри самой коллекции и просто вызовите имя из значения, возвращаемого курсором, используя item.name


person user3720570    schedule 26.01.2016    source источник


Ответы (2)


Если я правильно понимаю, вы ищете способ узнать название коллекции, над которой работаете или которую запрашивали; Если это так, вот как это сделать: пользователь collection.name

import pymongo
cursor = pymongo.Connection().test_db.test_collection.find()
print cursor.collection.name
for item in cursor:
    print item
    #this will print the item as a dictionary

Если вы хотите получить ключи внутри самой коллекции. Вы можете просто добавить дополнительный цикл и получить ключи для каждого документа в курсоре. пример:

import pymongo
cursor = pymongo.Connection().test_db.test_collection.find()
print cursor.collection.name
for item in cursor:
    for key in item:
        print key
person ibininja    schedule 27.01.2016

Вы можете перебирать имена полей верхнего уровня и связанные с ними значения, используя этот фрагмент:

for fieldname, fieldvalue in item.iteritems():
   print (fieldname, fieldvalue )
person Alex    schedule 26.01.2016
comment
Спасибо, что ответили так быстро. Я наткнулся на это решение до публикации этого вопроса, но я немедленно отбросил его, поскольку iteritems () - это метод для объектов словаря, и его не было в списке здесь в разделе методов, применимых к объектам курсора. - person user3720570; 27.01.2016
comment
Объекты курсора - это просто вложенные словари или, по крайней мере, их можно рассматривать как таковые. - person Alex; 27.01.2016