Docs Menu
Docs Home
/ / /
Ruby ドライバー

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

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

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

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

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

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

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

require 'mongo'
# Replace the placeholders with your credentials
uri = "<connection string>"
# Sets the server_api field of the options object to Stable API version 1
options = { server_api: { version: "1" }}
# Creates a new client and connect to the server
client = Mongo::Client.new(uri, options)
database = client.use('<database name>')
collection = database[:<collection name>]
# Start example code here
# End example code here
client.close

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

collection.indexes.create_one({ <field name>: 1 })

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

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

collection.indexes.create_one({ <field name 1>: -1, <field name 2>: 1 })

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

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

collection.indexes.create_one({ <field name>: 1 })

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

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

collection.indexes.create_one({ <GeoJSON field name>: '2dsphere' })

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

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

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

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

index_definition = {
mappings: {
dynamic: false,
fields: {
<field name>: { type: '<field type>' }
}
}
}
collection.search_indexes.create_one(index_definition, name: '<index name>')

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

puts collection.search_indexes.collect(&:to_json)

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

updated_definition = {
mappings: {
dynamic: false,
fields: { <updated field name>: { type: '<updated field type>' } }
}
}
collection.search_indexes.update_one(updated_definition, name: '<index name>')

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

collection.search_indexes.drop_one(name: '<index name>')

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

collection.indexes.create_one({ <field name>: 'text' })

テキスト インデックスの詳細については、テキスト インデックスのガイドを参照してください。

次の例では、指定されたインデックス指定の配列に複数のインデックスを作成します。

collection.indexes.create_many([
{ key: { <field name 1>: 1 } },
{ key: { <field name 2>: -1 } },
])

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

collection.indexes.drop_one( '<index name>' )

次の例は、コレクション内のすべてのインデックスを削除する方法を示しています。

collection.indexes.drop_all

次の例では、指定されたコレクション内のすべてのインデックスのリストを出力します。

puts collection.indexes.collect(&:to_json)

以下は、インデックスの作成時に追加できるオプションの完全なリストです。これらのオプションは、createIndex コマンドでサポートされているオプションをミラーリングします。詳細については、 MongoDB Serverマニュアルの createIndex コマンドを参照してください。

オプション
説明

:background

trueまたはfalseのいずれか。 インデックスをバックグラウンドで作成するように指示します。

:expire_after

コレクション内のドキュメントが期限切れになる秒数。

:name

インデックスの名前。

:sparse

インデックスをスパースにするかどうかは、 trueまたはfalseのいずれかです。

:storage_engine

この特定のインデックスの ストレージ エンジンの名前。

:version

使用するインデックス形式のバージョン。

:default_language

テキスト インデックスのデフォルト言語。

:language_override

デフォルト言語を上書きするときに使用するフィールド名。

:text_version

テキストインデックス ストレージのバージョン 形式。

:weights

テキスト検索でフィールドと重みを指定するドキュメント。

:sphere_version

2d sphere インデックス バージョン

:bits

2d インデックスの緯度と経度の最大境界を設定します。

:max

2d インデックスの緯度と経度の最大境界。

:min

2d インデックス内の緯度と経度の最小境界。

:bucket_size

geo haystack インデックスのロケーション値をグループ化するユニットの数。

:partial_filter_expression

部分インデックスのフィルター。

:hidden

インデックスを 非表示 にするかどうかを指定するブール値。非表示インデックス とは、コレクションに存在してもクエリ プランナーによって使用されることのないインデックスです。

:commit-quorum

プライマリがインデックスを準備完了とマークする前に、インデックス ビルドを正常に完了する必要があるレプリカセットのデータを持つノードの数を指定します。 潜在的な値は次のとおりです。

  • 0 からレプリカセットのノード数への整数

  • “majority” は、データを保持するノードの過半数が投票する必要があることを示します。

  • “votingMembers” つまり、投票データを持つすべてのノードが投票する必要がある

詳細については、 MongoDB Serverマニュアルの commitQuorum を参照してください。

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

戻る

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