Multikey Indexes
Overview
マルチキー インデックス は、配列値のあるフィールドに対するクエリのパフォーマンスを向上させるインデックスです。コレクションにマルチキーインデックスを作成するには、createIndex()
メソッドと、 単一フィールドインデックスの作成に使用する構文を使用します。
マルチキーインデックスを作成するときは、次の詳細を指定する必要があります。
インデックスを作成するフィールド
各フィールドの並べ替え順序(昇順または降順)
サンプル データ
このガイドの例では、movies
sample_mflix
Atlasサンプルデータセット の データベースの コレクションを使用します。 Scalaアプリケーションからこのコレクションにアクセスするには、AtlasMongoClient
クラスターに接続する を作成し、 変数と 変数に次の値を割り当てます。database
collection
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()
メソッドを使用します。次の例では、 cast
フィールドに昇順のインデックスを作成しています。
val index = Indexes.ascending("cast") val observable = collection.createIndex(index) Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
インデックスが作成されたことを確認するには、listIndexes()
メソッドを呼び出します。次の出力に示すように、リストに cast
のインデックスが表示されます。
collection.listIndexes().subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
{"v": 2, "key": {"cast": 1}, "name": "cast_1"}
以下は、cast
フィールドに作成されたインデックスによってカバーされるクエリの例です。
val filter = and(equal("cast", "Aamir Khan"), equal("cast", "Kajol")) collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
{"_id":...,"title":"Fanaa",...,"cast": ["Aamir Khan", "Kajol", "Rishi Kapoor", "Tabu"],...}
詳細情報
マルチキー インデックスの詳細については、 MongoDB Serverマニュアルの「 マルチキー インデックス 」を参照してください。
インデックスを管理する方法を示す実行可能な例については、「 インデックスを使用してクエリを最適化する 」を参照してください。
API ドキュメント
このガイドで説明されているメソッドの詳細については、次の API ドキュメントを参照してください。