Docs Menu
Docs Home
/ / /
Kotlin Sync ドライバー
/ /

複合インデックス

項目一覧

  • Overview
  • サンプル データ
  • 複合インデックスの作成
  • 詳細情報
  • API ドキュメント

複合インデックスは、コレクションのドキュメント内の複数のフィールドへの参照を保持し、クエリとソートのパフォーマンスを向上させます。

複合インデックスを作成するときは、以下を指定する必要があります。

  • インデックスを作成するフィールド

  • 各フィールドの並べ替え順序(昇順または降順)

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

次の Kotlin データ クラスは、このコレクション内のドキュメントをモデル化します。

data class Movie(
@BsonId
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 ドキュメントを参照してください。

戻る

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