インデックスを使用したクエリの最適化
項目一覧
Overview
このページでは、 Kotlin Sync ドライバーを使用してさまざまなタイプのインデックスを管理する方法を示すコピー可能なコード例を紹介します。
Tip
インデックスの操作の詳細については、 インデックスとの連携 ガイドをご覧ください。 このページに表示されているインデックスの詳細については、各セクションに提供されているリンクを参照してください。
このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string URI>
など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。
サンプル アプリケーション
次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。
Maven または Gradle プロジェクトに Kotlin Sync ドライバーがインストールされていることを確認します。
次のコードをコピーし、新しい
.kt
ファイルに貼り付けます。このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。
1 import com.mongodb.ConnectionString 2 import com.mongodb.MongoClientSettings 3 import com.mongodb.client.model.* 4 import com.mongodb.kotlin.client.* 5 import org.bson.Document 6 7 fun main() { 8 val uri = "<connection string URI>" 9 10 val settings = MongoClientSettings.builder() 11 .applyConnectionString(ConnectionString(uri)) 12 .retryWrites(true) 13 .build() 14 15 // Create a new client and connect to the server 16 val mongoClient = MongoClient.create(settings) 17 val database = mongoClient.getDatabase("<database name>") 18 val collection = database.getCollection<Document>("<collection name>") 19 20 // Start example code here 21 22 // End example code here 23 }
単一フィールド インデックス
次の例では、指定されたフィールドに昇順のインデックスを作成しています。
collection.createIndex(Indexes.ascending("<field name>"))
単一フィールドインデックスの詳細については、「単一フィールド インデックスガイド」を参照してください。
複合インデックス
次の例では、指定されたフィールドに複合インデックスを作成しています。
collection.createIndex(Indexes.ascending("<field name 1>", "<field name 2>"))
複合インデックスの詳細については、「複合インデックス」のガイドを参照してください。
Multikey Index
次の例では、指定された配列値フィールドにマルチキー インデックスを作成します。
collection.createIndex(Indexes.ascending("<array field name>"))
地理空間インデックス
次の例では、GeoJSON オブジェクトを含む指定されたフィールドに2 dsphere インデックスを作成します。
collection.createIndex(Indexes.geo2dsphere("<GeoJSON object field>"))
ユニークインデックス
次の例では、指定されたフィールドに一意のインデックスを作成しています。
val indexOptions = IndexOptions().unique(true) collection.createIndex(Indexes.ascending("<field name>"), indexOptions)
ワイルドカード インデックス
次の例では、 指定されたコレクションにワイルドカード インデックスを作成します。
collection.createIndex(Indexes.ascending("$**"))
クラスター化されたインデックス
次の例では、 _id
フィールドにクラスター化インデックスを持つ新しいコレクションを作成します。
val clusteredIndexOptions = ClusteredIndexOptions( Indexes.ascending("_id"), true ) val collection = database.createCollection("<collection name>", clusteredIndexOptions)
Atlas Search インデックス マネジメント
次のセクションには、Atlas Search インデックスを管理する方法を説明するコード例が含まれています。
Atlas Search インデックスの詳細については、「 Atlas Search と Vector Search インデックス 」のガイドを参照してください。
検索インデックスを作成
次の例では、指定されたフィールドに Atlas Search インデックスを作成します。
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("<index name>", index)
検索インデックスの作成の詳細については、「 検索インデックスの作成 」ガイドを参照してください。
検索インデックスをリストする
次の例では、指定されたコレクション内の Atlas Search インデックスの一覧を出力します。
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
検索インデックスをリストする方法について詳しくは、「 検索インデックスをリストする 」のガイドを参照してください。
検索インデックスを更新
次の例では、指定された新しいインデックス定義で既存の Atlas Search インデックスをアップデートします。
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index name>", newIndex)
検索インデックスの更新について詳しくは、「 検索インデックスを更新する 」ガイドを参照してください。
検索インデックスを削除
次の例では、指定された名前の Atlas Search インデックスを削除します。
collection.dropIndex("<index name>")
検索インデックスの削除の詳細については、「 検索インデックスの削除 」ガイドを参照してください。
Text Index
次の例では、指定された string フィールドにテキスト インデックスを作成します。
collection.createIndex(Indexes.text("<field name>"))
インデックスの削除
次の例では、指定された名前のインデックスを 1 つ削除します。
collection.dropIndex("<index name>")