2016-09-23 1 views
2

Я хочу найти все поля документа, используя pymongo для выполнения извлечения данных из них. В приведенном ниже коде даются все документы со всеми полями. Но можем ли мы найти все поля или ключи документа?Найти все поля документа в pyMongo

f = db['Collection'].find() 
for i in f: 
    print(i['Date']) 

я могу получить все документы ObjectId из

print(db['Collection'].distinct("_id")) 

Теперь у нас есть ids всех документов. Можем ли мы найти поля?

ответ

2

Метод PyMongo find() возвращает экземпляр Cursor, который позволяет выполнять итерацию по всем соответствующим документам. Документы в вашей итерации является Python Dictionary, так что вы можете перечислить все свои ключи с помощью keys() метода, например:

cursor = db['collection'].find({}) 
for document in cursor: 
    print(document.keys()) # print all fields of this document. 

Сказав выше, как правило, вы должны знать поля в вашей коллекции. Если вы хотите запросить документы, содержащие определенные поля, см. Оператор $exists.

+0

Может также работать как 'cursor = db ['collection']. Find()'. Можем ли мы найти поля, указав '_id' документа? Не указывать имя коллекции. – Amar

+0

База данных может содержать множество коллекций, коллекция может содержать много документов. Указание только '_id' без имени коллекции не имеет смысла. –

+0

Хорошо. Предоставляя имя коллекции, а затем '_id 'конкретного документа? Например, как 'db ['collection'] ['_ id']'? или как 'document [ObjectId ('57e35fca05cbcd1c385081a0')]'? – Amar