Docs Menu
Docs Home
/ / /
Scala
/

Multikey Indexes

項目一覧

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

マルチキー インデックス は、配列値のあるフィールドに対するクエリのパフォーマンスを向上させるインデックスです。コレクションにマルチキーインデックスを作成するには、createIndex() メソッドと、 単一フィールドインデックスの作成に使用する構文を使用します。

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

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

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

このガイドの例では、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() メソッドを使用します。次の例では、 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 ドキュメントを参照してください。

戻る

複合