Docs Menu
Docs Home
/ / /
Scala
/

複合インデックス

項目一覧

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

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

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

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

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

このガイドの例では、movies sample_mflixAtlasサンプルデータセット の データベース内の コレクションを使用します。 Scalaアプリケーションからこのコレクションにアクセスするには、AtlasMongoClient クラスターに接続する を作成し、 変数と 変数に次の値を割り当てます。databasecollection

val database: MongoDatabase = mongoClient.getDatabase("sample_mflix")
val collection: MongoCollection[Document] = database.getCollection("movies")

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。

このガイドの例を実行するには、ファイルに次のインポート ステートメントを含める必要があります。

import org.mongodb.scala._
import org.mongodb.scala.model.Indexes
import org.mongodb.scala.model.IndexOptions._
import org.mongodb.scala.model.Filters._
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.util.{Failure, Success}
import java.util.concurrent.TimeUnit

複合インデックスを作成するには、createIndex() メソッドを使用します。次の例では、 runtimeフィールドでは降順でインデックスを作成し、yearフィールドでは昇順でインデックスを作成します。

val index = Indexes.compoundIndex(Indexes.descending("runtime"),
Indexes.ascending("year"))
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

インデックスが によって作成されたことを確認するには、listIndexes() メソッドを使用します。次の出力に示すように、リストに runtimeyear のインデックスが表示されます。

collection.listIndexes().subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"v": 2, "key": {"runtime": -1, "year": 1}, "name": "runtime_-1_year_1"}

以下は、runtime フィールドと year フィールドに作成されたインデックスによってカバーされるクエリの例です。

val filter = and(gt("runtime", 80), gt("year", 1999))
collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id":...,"runtime": 98,...,"title": "In the Mood for Love",...,"year": 2000,...}

複合インデックスの詳細については、 マニュアルの「 複合インデックスMongoDB Server 」を参照してください。

インデックスの管理方法を示す実行可能な例を見るには、インデックスを使用してクエリを最適化する」を参照してください。

このガイドで説明されているメソッドの詳細については、次の API ドキュメントを参照してください。

戻る

シングル フィールド