Docs Menu

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

インデックスとの連携

項目一覧

  • Overview
  • 操作上の考慮事項
  • サンプル データ
  • インデックスの作成
  • インデックスを削除する
  • 単一インデックスを排除する
  • すべてのインデックスを削除する
  • 詳細情報
  • API ドキュメント

このガイドでは、PyMongo でインデックスを使用する方法を学習できます。 インデックスはクエリの効率を向上させ、ドキュメントのクエリと保存に機能を追加します。

インデックスがないと、MongoDB はコレクション内のすべてのドキュメントをスキャンして 、各クエリに一致するドキュメントを見つける必要があります。 これらのコレクションスキャンは遅く、アプリケーションのパフォーマンスに悪影響を与える可能性があります。 ただし、クエリに適切なインデックスがある場合、MongoDB はそのインデックスを使用して検査する必要があるドキュメントを制限できます。

クエリのパフォーマンスを向上させるには、ソートされた結果を返すアプリケーションのクエリや操作で頻繁に表示されるフィールドにインデックスをビルドします。 追加する各インデックスはアクティブな場合にディスク領域とメモリを消費するため、キャパシティー プランニングとしてインデックス メモリとディスク使用量を追跡することをお勧めします。 さらに、書込み操作によってインデックス付きフィールドがアップデートされると、MongoDB は関連するインデックスをアップデートします。

MongoDB は動的スキーマをサポートしているため、アプリケーションは名前が事前に不明であるか、任意のフィールドであるフィールドに対してクエリを実行できます。 MongoDB 4.2では、これらのクエリをサポートするために ワイルドカード インデックスが導入されています。 ワイルドカード インデックスは、ワークロードベースのインデックス プランニングを置き換えるように設計されていません。

データモデルの設計とアプリケーションに適したインデックスの選択の詳細については、 マニュアルの「 データ モデリングとインデックス MongoDB Server」のガイドを参照してください。

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

MongoDB は、データのクエリをサポートするためにさまざまなインデックス タイプをサポートしています。 以下のページでは、最も一般的なインデックス型について説明し、各インデックス型を作成するためのサンプルコードを示します。

_idフィールドのデフォルトの一意なインデックスを除く未使用のインデックスを削除できます。

次のセクションでは、単一のインデックスを削除する方法またはコレクション内のすべてのインデックスを削除する方法を示します。

インデックスのインスタンスまたはインデックス名をdrop_index()メソッドに渡して、コレクションからインデックスを削除します。

次の例では、 moviesコレクションから"_title_"という名前のインデックスを削除します。

movies.drop_index("_title_")

注意

複合テキスト インデックスから単一のフィールドを削除することはできません。 インデックス フィールドを更新するには、インデックス全体を削除し、新しいインデックスを作成する必要があります。

MongoDB 4.2 以降では、コレクションでdrop_indexes()メソッドを呼び出すことで、すべてのインデックスを削除できます。

collection.drop_indexes()

以前のバージョンの MongoDB の場合は、コレクションでdrop_index()を呼び出すパラメータとして"*"を渡します。

collection.drop_index("*")

MongoDBのインデックスの詳細については、 MongoDB Serverマニュアルの「 インデックス ガイド 」を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

← インデックスによるクエリの最適化