Overview
マルチキー インデックス は、配列値のあるフィールドに対するクエリのパフォーマンスを向上させるインデックスです。単一フィールドまたは複合インデックスと同じ構文を使用して、マルチキーインデックスを定義できます。
サンプル データ
このガイドの例では、movies sample_mflixAtlasサンプルデータセットの データベース内の コレクションを使用します。 MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 MongoDBを使い始めるガイドを参照してください 。
マルチキー インデックスの作成
次の例では、 castフィールドにマルチキー インデックスを作成しています。
bson_error_t error; bson_t *keys = BCON_NEW("cast", 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("cast", BCON_UTF8("Viola Davis")); 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" : ..., "cast" : [ "Kelsey Grammer", "Cary Elwes", "Viola Davis", "John C. McGinley" ], "title" : "The Pentagon Wars", ... } { "_id" : ..., "cast" : [ "George Clooney", "Natascha McElhone", "Viola Davis", "Jeremy Davies" ], "title" : "Solaris", ... } { "_id" : ..., "cast" : [ "Meryl Streep", "Philip Seymour Hoffman", "Amy Adams", "Viola Davis" ], "title" : "Doubt", ... } { "_id" : ..., "cast" : [ "Hugh Jackman", "Jake Gyllenhaal", "Viola Davis", "Maria Bello" ], "title" : "Prisoners", ... } { "_id" : ..., "cast" : [ "Emma Stone", "Viola Davis", "Bryce Dallas Howard", "Octavia Spencer" ], "title" : "The Help", ... } ...
マルチキー インデックスは、クエリ カバレッジ、インデックスバウンド計算、およびソート動作の点で他のインデックスとは動作が異なります。 マルチキー インデックス(動作や制限事項を含む)の詳細については、 マニュアルの「 マルチキー インデックス MongoDB Server」ガイドを参照してください。
API ドキュメント
このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。