Docs Home → アプリケーションの開発 → Python ドライバー → PyMongo
Retrieve Data
Overview
このガイドでは、MongoDB 同期 Python ドライバーである PyMongo を使用して、読み取り操作により MongoDB コレクションからデータを検索する方法を学習できます。 find()
またはfind_one()
メソッドを呼び出して、基準のセットに一致するドキュメントを取得できます。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants.restaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 PyMongo を使い始める を参照してください。
ドキュメントの検索
PyMongo には、コレクションからドキュメントを取得するための 2 つの方法find_one()
とfind()
が含まれています。 これらのメソッドはクエリフィルターを受け取り、1 つ以上の一致するドキュメントを返します。 クエリフィルターは、クエリで検索するドキュメントを指定するオブジェクトです。
クエリフィルターの詳細については、「クエリの指定」を参照してください。
1 つのドキュメントの検索
コレクション内の 1 つのドキュメントを検索するには、 find_one()
メソッドを呼び出し、検索するドキュメントの基準を指定するクエリフィルターを渡します。 複数のドキュメントがクエリフィルターに一致する場合、このメソッドは検索された結果から最初に一致するドキュメントを Python 辞書として返します。 クエリフィルターに一致するドキュメントがない場合、メソッドはNone
を返します。
Tip
find_one()
メソッドは、一致するドキュメントが 1 つしかないことがわかっている場合や、最初の一致のみに該当する場合に便利です。
次の例では、 find_one()
メソッドを使用して、 "cuisine"
フィールドの値が"Bakery"
である最初のドキュメントを検索します。
restaurant = sample_restaurants.restaurants.find_one({"cuisine": "Bakery"})
Tip
並び替え順
ソート条件が指定されていない場合、 find_one()
メソッドはディスク上の自然な順序で最初のドキュメントを返します。
並べ替えについて詳しくは、「並べ替えガイド 」を参照してください。
複数ドキュメントの検索
コレクション内の複数のドキュメントを検索するには、検索するドキュメントの基準を指定するクエリフィルターを find()
メソッドに渡します。
次の例では、 find()
メソッドを使用して、 "cuisine"
フィールドの値が"Spanish"
であるすべてのドキュメントを検索します。
cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"})
カーソルを使用して、find()
メソッドによって返されたドキュメントを反復処理できます。カーソルは、アプリケーションがデータベースの結果を反復処理しながら、特定の時点でメモリ内に結果のサブセットのみを保持できるようにするメカニズムです。カーソルは、find()
メソッドが大量のドキュメントを返す場合に便利です。
次の例に示すように、 for-in
ループを使用して、カーソル内のドキュメントを反復処理できます。
cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"}) for restaurant in cursor: ...
注意
すべてのドキュメントの検索
コレクション内のすべてのドキュメントを検索するには、 find()
メソッドに空のフィルターを渡します。
all_restaurants = sample_restaurants.restaurants.find({})
検索動作の変更
メソッドとfind()
find_one()
メソッドの動作を変更するには、名前付き引数を渡します。次の表では、一般的に使用される引数について説明しています。
Argument | 説明 |
---|---|
batch_size | Limits the number of documents to hold in a cursor at a given time. |
collation | An instance of the Collation class that sets the collation options. |
comment | A string to attach to the query. This can help you trace and interpret the
operation in the server logs and in profile data. To learn more about query comments,
see the $comment page. |
hint | The index to use for the query. |
max_time_ms | The maximum execution time on the server for this operation. If this time is
exceeded, PyMongo aborts the operation and raises an ExecutionTimeout . |
次の例では、 find()
メソッドを使用して、 "cuisine"
フィールドの値が"Italian"
であるすべてのドキュメントを検索し、最大実行時間を10秒( 10 、 000ミリ秒)に設定しています。
cursor = sample_restaurants.restaurants.find({"cuisine": "Italian"}, max_time_ms=10000)
使用可能な引数の完全なリストについては、 API ドキュメント を参照してくださいfind() method
の
詳細情報
クエリフィルターの詳細については、「クエリの指定」を参照してください。
PyMongo でドキュメントを取得する実行可能なコード例については、「 MongoDB からのデータの読み取り 」を参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。