Docs Menu
Docs Home
/ / /
Scala

インデックスを使用したクエリの最適化

項目一覧

  • Overview
  • サンプル アプリケーション
  • 単一フィールド インデックス
  • 複合インデックス
  • Multikey Index
  • 地理空間インデックス
  • インデックスの削除
  • Atlas Search インデックス マネジメント
  • 検索インデックスを作成
  • 検索インデックスをリストする
  • 検索インデックスを更新
  • 検索インデックスを削除
  • API ドキュメント

このページでは、 MongoDB Scalaドライバーを使用してさまざまなタイプのインデックスを管理する方法を示すコピー可能なコード例を紹介します。

このページの例を使用するには、コード例をサンプルアプリケーションまたは独自のアプリケーションにコピーします。コード例にあるすべてのプレースホルダー(<connection string URI>など)を、 MongoDBデプロイに関連する値に置き換えてください。

次のサンプルアプリケーションを使用して、このページのコードをテストできます。サンプルアプリケーション を使用するには、次の手順を実行します。

  1. プロジェクトにScalaドライバーがインストールされていることを確認してください。詳しくは、「 ダウンロードとインストール 」のガイドを参照してください。

  2. 次のコードをコピーし、新しい.scalaファイルに貼り付けます。

  3. このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。

import org.mongodb.scala._
import org.mongodb.scala.model.SearchIndexModel
import java.util.concurrent.TimeUnit
import scala.concurrent.Await
import scala.concurrent.duration.Duration
import org.mongodb.scala.model.Indexes
object SearchIndexes {
def main(args: Array[String]): Unit = {
// Create a new client and connect to the server
val mongoClient = MongoClient("<connection string URI>")
val database = mongoClient.getDatabase("<database name>")
val collection = database.getCollection("<collection name>")
// Start example code here
// End example code here
Thread.sleep(1000)
mongoClient.close()
}
}

次の例では、指定されたフィールドに昇順のインデックスを作成しています。

val index = Indexes.ascending("<field name>")
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

単一フィールドインデックスの詳細については、「単一フィールド インデックスガイド」を参照してください。

次の例では、指定された 2 つのフィールドに複合インデックスを作成しています。

val index = Indexes.compoundIndex(
Indexes.descending("<field name 1>"),
Indexes.ascending("<field name 2>")
)
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

複合インデックスの詳細については、「複合インデックス」のガイドを参照してください。

次の例では、指定された配列値フィールドにマルチキー インデックスを作成します。

val index = Indexes.ascending("<field name>")
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

マルチキー インデックスの詳細については、「 マルチキーインデックス」のガイドを参照してください。

次の例では、GeoJSON オブジェクトを含む指定されたフィールドに2 dsphere インデックスを作成します。

val observable = collection.createIndex(Indexes.geo2dsphere("<2d index>"))
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

2dsphere インデックスの詳細については、 MongoDB Serverマニュアルの2 dsphere インデックスのガイドを参照してください。

GeoJSON タイプの詳細については、 MongoDB Serverマニュアルの 「GeoJSON オブジェクト」ガイドを参照してください。

次の例では、指定された名前のインデックスを 1 つ削除します。

val observable = collection.dropIndex("<index name>")
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

次のセクションには、Atlas Search インデックスを管理する方法を説明するコード例が含まれています。

検索インデックスの詳細については、「 Atlas Search インデックスガイド 」を参照してください。

次の例では、指定されたフィールドに Atlas Search インデックスを作成します。

val index = Document("mappings" -> Document("dynamic" -> <boolean value>))
val observable = collection.createSearchIndex("<index name>", index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

次の例では、指定されたコレクション内の Atlas Search インデックスの一覧を出力します。

val observable = collection.listSearchIndexes()
observable.subscribe(new Observer[Document] {
override def onNext(index: Document): Unit = println(index.toJson())
override def onError(e: Throwable): Unit = println("Error: " + e.getMessage)
override def onComplete(): Unit = println("Completed")
})

次の例では、指定された新しいインデックス定義で既存の Atlas Search インデックスをアップデートします。

val updateIndex = Document("mappings" -> Document("dynamic" -> false))
val observable = collection.updateSearchIndex("<index to update>", updateIndex)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

次の例では、指定された名前の Atlas Search インデックスを削除します。

val observable = collection.dropSearchIndex("<index name>")
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

このガイドで使用されているメソッドまたはオブジェクトの詳細については、次のAPIドキュメントを参照してください。

戻る

レプリカセットに対する操作