Docs Menu
Docs Home
/ / /
C++ ドライバー
/

インデックスとの連携

項目一覧

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

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

インデックスがないと、 MongoDBはコレクション内のすべてのドキュメントをスキャンして 、各クエリに一致するドキュメントを見つける必要があります。 クエリに適切なインデックスがある場合、 MongoDBではそのインデックスを使用して検査する必要があるドキュメントを制限し、潜在的なクエリのパフォーマンスを向上させることができます。

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

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

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

このガイドの例では、 Atlasサンプルデータセットsample_mflixデータベース内の moviesコレクションを使用します。 C++アプリケーションからこのコレクションにアクセスするには、Atlasmongocxx::client クラスターに接続する をインスタンス化し、 変数と 変数に次の値を割り当てます。dbcollection

auto db = client["sample_mflix"];
auto collection = db["movies"];

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。

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

  • 単一フィールド インデックス

  • 複合インデックス

  • Atlas Search インデックス

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

次のセクションでは、コレクションから 1 つ以上のインデックスを削除する方法を示す例を示します。

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

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

collection.indexes().drop_one("title_1");

注意

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

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

collection.indexes().drop_all();

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

collection.indexes().drop_one("*");

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

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

戻る

Indexes