複合インデックス
Overview
複合インデックスは、コレクションのドキュメント内の複数のフィールドへの参照を保持し、クエリとソートのパフォーマンスを向上させます。
複合インデックスを作成するときは、以下を指定する必要があります。
インデックスを作成するフィールド
各フィールドの並べ替え順序(昇順または降順)
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_mflix
データベース内の movies
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
次の Kotlin データ クラスは、このコレクション内のドキュメントをモデル化します。
data class Movie( val id: ObjectId, val title: String? = "", val type: String? = "", val genres: List<String>? = null, val cast: List<String>? = null, val plot: String? = "", )
複合インデックスの作成
次の例では、 type
フィールドとgenre
フィールドに複合インデックスを作成し、両方のフィールドを昇順でインデックス付けします。
collection.createIndex(Indexes.ascending(Movie::type.name, Movie::genres.name))
以下は、前のコード サンプルで作成されたインデックスを使用するクエリの例です。
val filter = and( eq(Movie::type.name, "movie"), `in`(Movie::genres.name, "Drama") ) val sort = Sorts.ascending(Movie::type.name, Movie::genres.name) val results = collection.find(filter).sort(sort) results.forEach { result -> println(result) }
Movie(id=573a1392f29313caabcda755, title=China Seas, type=movie, genres=[Action, Drama, Adventure], ...) Movie(id=573a1392f29313caabcd9ca6, title=Scarface, type=movie, genres=[Action, Crime, Drama], ... ) Movie(id=573a1392f29313caabcdb258, title=The Hurricane, type=movie, genres=[Action, Drama, Romance], ...) Movie(id=573a1391f29313caabcd820b, title=Beau Geste, type=movie, genres=[Action, Adventure, Drama], ...) ...
詳細情報
複合インデックスの詳細については、 マニュアルの「 複合インデックスMongoDB Server 」を参照してください。
複合インデックスを使用した効果的なインデックス戦略の詳細については、 MongoDB Serverマニュアルの 「 ESR ルール 」 を参照してください。
API ドキュメント
このガイドで説明されているメソッドの詳細については、次の API ドキュメントを参照してください。