Docs Menu
Docs Home
/ /

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

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

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

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

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

注意

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

このガイドの例では、Atlasサンプルデータセットsample_mflixデータベースの moviesコレクションを使用します。Rubyアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続する Mongo::Clientオブジェクトを作成し、次の値を database 変数と collection 変数に割り当てます。

database = client.use('sample_mflix')
collection = database[:movies]

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。

単一フィールドインデックスを作成するには、 create_oneメソッドを使用します。 次の例では、 titleフィールドに昇順のインデックスを作成しています。

# Creates an index on the "title" field
collection.indexes.create_one({ title: 1 })

コレクション内のインデックスを一覧表示することで、インデックスが作成されたことを確認できます。次の出力に示すように、リストに title のインデックスが表示されます。

# Lists all indexes on the collection
puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"title": 1}, "name": "title_1"}

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

# Finds a document with the title "Sweethearts" by using the newly created index
filter = { title: 'Sweethearts' }
doc = collection.find(filter).first
if doc
puts doc.to_json
else
puts "No document found"
end
{"_id":...,"plot":"A musical comedy duo...",
"genres":["Musical"],...,"title":"Sweethearts",...}

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

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

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

戻る

Indexes

項目一覧