2016-09-23 7 views
2

pymongoを使用して文書のすべてのフィールドを検索し、そこからデータを取得したいと考えています。以下のコードは、すべてのドキュメントにすべてのフィールドを指定しています。しかし、文書のすべてのフィールドやキーを見つけることはできますか?pyMongoで文書の全フィールドを検索

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

私は今、私たちはすべての文書のidsを持っているすべての文書ObjectId

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

から得ることができます。フィールドを見つけることはできますか?

答えて

2

PyMongo find()メソッドは、Cursorインスタンスを返します。これにより、一致するすべてのドキュメントを繰り返し処理できます。

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

は上記を言って、一般的にあなたのコレクション内のフィールドを知っている必要があります:あなたはたとえば、 keys()方法を使用して、そのキーのすべてを一覧表示することができますので、あなたの反復での文書は、 Python Dictionaryです。 特定のフィールドを含む文書を照会する場合は、オペレーター $existsを参照してください。

+0

'cursor = db ['collection']。find()'としても動作できます。文書の '_id'を与えてフィールドを見つけることはできますか?コレクション名を指定しない。 – Amar

+0

データベースには多数のコレクションを含めることができ、コレクションには多くのドキュメントを含めることができます。コレクション名なしで '_id'だけを指定すると、意味をなさない。 –

+0

よろしくお願いします。特定のドキュメントのコレクション名と '_id'を与えることによって?例えば ​​'db ['collection'] ['_ id']'のように?または 'document [ObjectId( '57e35fca05cbcd1c385081a0')]'のように? – Amar