MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs Menu
Docs Home
/ /
インデックスとの連携
/ / /

複合インデックス

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

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

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

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

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

次の 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 ドキュメントを参照してください。

戻る

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

項目一覧