Docs Menu
Docs Home
/ / /
Scala
/

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

項目一覧

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

単一フィールドインデックス は、コレクション内のドキュメントの単一フィールドを参照するインデックスです。 これらのインデックスにより、単一フィールドのクエリとソートのパフォーマンスが向上します。 また、一定時間の経過後または指定されたクロック時間にコレクションからドキュメントを自動的に削除する TTL インデックスもサポートしています。

単一フィールドインデックスを作成する場合は、次の詳細を指定する必要があります。

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

  • 昇順または降順によるインデックス値のソート順序

注意

デフォルトの_id_インデックスは、単一フィールドインデックスの例です。このインデックスは、新しいコレクションが作成されるときに、_idフィールドに自動的に作成されます。

このガイドの例では、 Atlas サンプル データセットsample_mflixデータベースの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()メソッドを使用します。 次の例では、 titleフィールドに昇順のインデックスを作成しています。

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

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

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

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

val filter = equal("title", "Sweethearts")
collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id":...,"plot":"A musical comedy duo...",
"genres":["Musical"],...,"title":"Sweethearts",...}

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

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

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

戻る

Indexes