Docs Menu

Docs Homeアプリケーションの開発Python ドライバーPyMongo

Retrieve Data

項目一覧

  • Overview
  • サンプル データ
  • ドキュメントの検索
  • 1 つのドキュメントの検索
  • 複数ドキュメントの検索
  • 検索動作の変更
  • 詳細情報
  • API ドキュメント

このガイドでは、MongoDB 同期 Python ドライバーである PyMongo を使用して、読み取り操作により MongoDB コレクションからデータを検索する方法を学習できます。 find()またはfind_one()メソッドを呼び出して、基準のセットに一致するドキュメントを取得できます。

このガイドの例では、 Atlas サンプル データセットsample_restaurants.restaurantsコレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 PyMongo を使い始める を参照してください。

PyMongo には、コレクションからドキュメントを取得するための 2 つの方法find_one()find()が含まれています。 これらのメソッドはクエリフィルターを受け取り、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 ドキュメントを参照してください。

← クエリを指定する