単一フィールド インデックス
Overview
単一フィールド インデックスは、コレクションのドキュメント内の単一のフィールドを参照するインデックスです。 単一フィールド クエリとソートのパフォーマンスが向上し、一定時間の経過後または特定のクロック時間にコレクションからドキュメントを自動的に排除するTTL インデックスをサポートします。
単一フィールド インデックスを作成する場合は、以下を指定する必要があります。
インデックスを作成するフィールド。
インデックス値の並べ替え順序(昇順または降順)。昇順の場合は
BCON_INT32 (1)
を指定し、降順の場合はBCON_INT32 (-1)
を指定します。
注意
_id_
インデックスは、単一フィールド インデックスの例です。 このインデックスは、新しいコレクションが作成されるときに、 _id
フィールドに自動的に作成されます。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_mflix
データベースのmovies
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
単一フィールド インデックスの作成
次の例では、 title
フィールドに昇順のインデックスを作成します。
bson_error_t error; bson_t *keys = BCON_NEW ("title", BCON_INT32 (1)); mongoc_index_model_t *index_model = mongoc_index_model_new (keys, NULL); if (mongoc_collection_create_indexes_with_opts (collection, &index_model, 1, NULL, NULL, &error)) { printf ("Successfully created index\n"); } else { fprintf (stderr, "Failed to create index: %s", error.message); } bson_destroy (keys); mongoc_index_model_destroy (index_model);
以下は、前のコード例で作成されたインデックスによってカバーされるクエリの例です。
const bson_t *doc; bson_t *filter = BCON_NEW ("title", "Batman"); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, NULL, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } mongoc_cursor_destroy (results); bson_destroy (filter);
{ "_id" : ..., "title" : "Batman", ... }
詳細情報
単一フィールド インデックスの詳細については、 MongoDB Serverマニュアルの「 単一フィールド インデックス 」を参照してください。
API ドキュメント
このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。