Docs Menu
Docs Home
/ / /
Scala
/

インデックスの作成

項目一覧

  • 前提条件
  • MongoDB 配置への接続
  • 昇順インデックス
  • 単一昇順インデックス
  • 昇順複合インデックス
  • 降順インデックス
  • 単一降順キー インデックス
  • 複合降順キー インデックス
  • 複合インデックス
  • Text Indexes
  • ハッシュされたインデックス
  • 地理空間インデックス
  • 2dsphere
  • インデックス オプション
  • ユニークインデックス
  • 部分インデックス
  • コレクションのインデックスのリストの取得

インデックスは、MongoDB でクエリを効率的に実行するのに役立ちます。 1 つまたは複数のフィールドにインデックスを作成するには、インデックス仕様ドキュメントを MongoCollection.createIndex()メソッドに渡します。

Scala ドライバーは、さまざまな MongoDB インデックス キー タイプのインデックス仕様ドキュメントを作成するための静的ファクトリー メソッドを含む Indexesクラスを提供します。 インデックス タイプの詳細については、サーバー マニュアルのインデックスを参照してください。

注意

MongoDB は、同じ仕様のインデックスがまだ存在しない場合にのみインデックスを作成します。

このガイドのコード例を実行するには、プログラムに次のインポート ステートメントを含める必要があります。

import org.mongodb.scala._
import org.mongodb.Indexes
import org.mongodb.IndexOptions
import org.mongodb.Filters

注意

このガイドでは、クイック スタート プライマリで説明されているObservable暗黙的な を使用します。

まず、MongoDB 配置に接続し、 インスタンスとMongoDatabase MongoCollectionインスタンスを 宣言して定義します。

次のコードは、ポート27017localhostで実行されているスタンドアロンの MongoDB 配置に接続します。 次に、 testデータベースを参照するためのdatabase変数と、 restaurantsコレクションを参照するためのcollection変数を定義します。

val mongoClient: MongoClient = MongoClient()
val database: MongoDatabase = mongoClient.getDatabase("test")
val collection: MongoCollection[Document] = database.getCollection("restaurants")

MongoDB 配置への接続の詳細については、「 MongoDB への接続」チュートリアルを参照してください。

昇順インデックスの仕様を作成するには、 Indexes.ascending()静的ヘルパー メソッドを使用します。

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

collection.createIndex(Indexes.ascending("name"))
.printResults()

次の例では、 starsフィールドとnameフィールドに昇順の複合インデックスを作成しています。

collection.createIndex(Indexes.ascending("stars", "name"))
.printResults()

複合インデックスを作成する別の方法については、「複合インデックス」セクションを参照してください。

降順インデックスの仕様を作成するには、 Indexes.descending()静的ヘルパー メソッドを使用します。

次の例では、 starsフィールドに降順のインデックスを作成しています。

collection.createIndex(Indexes.descending("stars"))
.printResults()

次の例では、 starsフィールドとnameフィールドに降順の複合インデックスを作成しています。

collection.createIndex(Indexes.descending("stars", "name"))
.printResults()

複合インデックスを作成する別の方法については、「複合インデックス」セクションを参照してください。

複合インデックスの仕様を作成するには、 Indexes.compoundIndex()静的ヘルパー メソッドを使用します。

注意

すべてのキーが昇順である複合インデックスの仕様を作成するには、 ascending()メソッドを使用できます。 すべてのキーが降順である複合インデックスの仕様を作成するには、 descending()メソッドを使用できます。

次の例では、 starsフィールドでは降順で、 nameフィールドでは昇順で複合インデックスが作成されます。

collection.createIndex(
Indexes.compoundIndex(Indexes.descending("stars"),
Indexes.ascending("name")))
.printResults()

MongoDB は、string コンテンツのテキスト検索をサポートするための テキストインデックス を提供します。 テキストインデックスには、値が string または複数の string 配列である任意のフィールドを含めることができます。 テキストインデックスの仕様を作成するには、 Indexes.text()ヘルパー メソッドを使用します。

次の例では、 nameフィールドに テキスト インデックスを作成しています。

collection.createIndex(Indexes.text("name"))
.printResults()

テキスト インデックスの詳細については、サーバー マニュアルの「テキストインデックス 」を参照してください。

ハッシュ インデックス インデックスの仕様を作成するには、 Indexes.hashed()静的ヘルパー メソッドを使用します。

次の例では、 _idフィールドに ハッシュされたインデックスを作成しています。

collection.createIndex(Indexes.hashed("_id"))
.printResults()

ハッシュインデックスの詳細については、サーバー マニュアルの「 ハッシュされたインデックス 」を参照してください。

地理空間クエリをサポートするために、MongoDB はさまざまな地理空間インデックスをサポートしています。 地理空間インデックスの詳細については、サーバー マニュアルの「地理空間インデックス 」を参照してください。

2dsphereインデックスの仕様を作成するには、 Indexes.geo2dsphere()静的ヘルパー メソッドを使用します。

次の例では、 contact.locationフィールドに2dsphereインデックスを作成します。

collection.createIndex(Indexes.geo2dsphere("contact.location"))
.printResults()

インデックス仕様ドキュメントに加えて、 createIndex()メソッドは、一意のインデックスまたは部分インデックスを作成するようにドライバーに指示するインデックス オプション ドキュメントを受け入れることができます。

ドライバーはさまざまなインデックス オプションを指定するためのIndexOptionsクラスを提供します。

次のインポート ステートメントをコードに追加して、 IndexOptionsインスタンスを作成します。

import org.mongodb.scala.model.IndexOptions

次のコードでは、unique(true) オプションを指定して、name フィールドとstars フィールドに一意のインデックスを作成します。

val indexOptions = IndexOptions().unique(true)
collection.createIndex(Indexes.ascending("name", "stars"), indexOptions)
.printResults()

一意なインデックスの詳細については、サーバー マニュアルの「 一意なインデックス 」を参照してください。

部分インデックスを作成するには、 partialFilterExpressionインデックス オプションを含めます。

次の例では、 statusフィールドの値が"A"であるドキュメントに部分インデックスを作成します。

val partialFilterIndexOptions = IndexOptions()
.partialFilterExpression(Filters.exists("contact.email"))
collection.createIndex(
Indexes.descending("name", "stars"), partialFilterIndexOptions)
.printResults()

部分インデックスの詳細については、サーバー マニュアルの「部分インデックス 」を参照してください。

インデックスのリストを取得するには、 listIndexes()メソッドを使用します。 次のコードを使用することで、 コレクションのインデックスが一覧表示されます。

collection.listIndexes().printResults()

その他のインデックス オプションの詳細については、サーバー マニュアルの「インデックス プロパティ」を参照してください。

戻る

データベースとコレクション