AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

配列フィールドに対するインデックスの作成

配列値を含むフィールドにインデックスを作成すると、そのフィールドに対するクエリのパフォーマンスが向上します。 配列値を含むフィールドにインデックスを作成すると、MongoDB はそのインデックスをマルチキー インデックスとして保存します。

インデックスを作成するには、 db.collection.createIndex()メソッドを使用します。 操作は次のプロトタイプのようになります。

db.<collection>.createIndex( { <field>: <sortOrder> } )

このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。

定期的にクエリを実行すると、1910 より前にリリースされ、Short ジャンルの映画が返されます。このクエリのパフォーマンスを向上させるには、genresフィールドにインデックスを作成します。

警告

MongoDB 9.0 以降では、フィールドを参照するクエリが実行中中にインデックス付きフィールドがマルチキーフィールドになると、そのクエリは QueryKilledError の付与で失敗する可能性があります。インデックスフィールドは、ドキュメントを挿入または更新して、フィールドに配列値を含むようにマルチキーになります。

このエラーでクエリが失敗した場合は、挿入または更新操作が完了した後にクエリを再実行してください。

次の操作では、 moviesコレクションのgenresフィールドに昇順のマルチキー インデックスが作成されます。

db.movies.createIndex( { genres: 1 } )
genres_1

genresには配列値が含まれているため、MongoDB はこのインデックスをマルチキー インデックスとして保存します。

インデックスには、 genresフィールドに表示される個々の値のキーが含まれています。例、ジャンル Crime と Drama を保存する映画 The Godfather の場合、インデックスには各ジャンルに対して 1 つのキーが含まれています。インデックスは昇順です。つまり、キーは昇順で保存されます。

インデックスは、 genresフィールドで を選択するクエリをサポートしています。例、次のクエリは、genres 配列内の少なくとも 1 つの要素が Short であり、かつその映画は 1910 より前にリリースされている映画を返します。

db.movies.find(
{ genres: "Short", year: { $lt: 1910 } },
{ _id: 0, title: 1, year: 1, genres: 1 }
)
[
{
genres: [
'Short',
'Western'
],
title: 'The Great Train Robbery',
year: 1903
},
{
genres: [
'Short',
'Drama'
],
title: 'A Corner in Wheat',
year: 1909
},
{
genres: [
'Short',
'Romance'
],
title: 'The Kiss',
year: 1896
},
{
genres: [
'Short',
'Romance'
],
title: 'The Kiss',
year: 1896
}
]

注意

moviesコレクション内のdocumentには、ここに表示されていない追加フィールドが含まれています。