単一フィールド インデックス
MongoDB は、 ドキュメント の コレクション 内の任意のフィールドのインデックスを完全にサポートしています。デフォルトでは、すべてのコレクションには_id フィールドのインデックスがあります。アプリケーションとユーザーは、重要なクエリや操作をサポートするために追加のインデックスを追加する場合があります。
このドキュメントでは、単一のフィールドの昇順および降順インデックスについて説明します。
互換性
でホストされている配置では、単一フィールドMongoDB Atlas インデックスを使用できます。
MongoDB Atlas でホストされている配置のインデックスの管理の詳細については、「インデックスの作成、表示、削除、および非表示 」を参照してください。
単一フィールドでの昇順インデックスの作成
次のサンプル ドキュメントを含むコレクション schools
について考えます。
db.schools.insertOne( { "_id": ObjectId("570c04a4ad233577f97dc459"), "studentsEnrolled": 1034, "location": { state: "NY", city: "New York" } } )
次の操作では、 schools
コレクションのstudentsEnrolled
フィールドに昇順のインデックスが作成されます。
db.schools.createIndex( { studentsEnrolled: 1 } )
作成されたインデックスは、次のようなフィールドstudentsEnrolled
を選択するクエリをサポートします。
db.schools.find( { studentsEnrolled: 1034 } ) db.schools.find( { studentsEnrolled: { $gt: 500 } } )
埋め込みフィールドでのインデックスを作成する
埋め込みドキュメント内のフィールドにインデックスを作成できるのは、ドキュメント内の最上位フィールドにインデックスを作成できるのと同様です。 埋め込みフィールドのインデックスは、 埋め込みドキュメント のインデックスとは異なります。埋め込みドキュメントの最大インデックスサイズまでの完全なコンテンツが含まれます。 代わりに、埋め込みフィールドのインデックスを使用すると、「ドット表記」を使用して埋め込みドキュメントを内部検証できます。
次のサンプル ドキュメントのようなドキュメントを含むrecords
という名前のコレクションについて考えてみます。
{ "_id": ObjectId("570c04a4ad233577f97dc459"), "studentsEnrolled": 1034, "location": { state: "NY", city: "New York" } }
次の操作は、 location.state
フィールドにインデックスを作成します。
db.schools.createIndex( { "location.state": 1 } )
作成されたインデックスは、次のようなフィールドlocation.state
を選択するクエリをサポートします。
db.schools.find( { "location.state": "CA" } ) db.schools.find( { "location.city": "Albany", "location.state": "NY" } )
埋め込みドキュメントにインデックスを作成する
埋め込みドキュメント全体にインデックスを作成することもできます。
埋め込みドキュメントにインデックスを作成すると、その埋め込みドキュメント全体を指定するクエリのみがインデックスを使用できます。ドキュメント内の特定のフィールドに対するクエリでは、インデックスは使用されません。
次のサンプル ドキュメントのようなドキュメントを含むschools
という名前のコレクションについて考えてみます。
{ "_id": ObjectId("570c04a4ad233577f97dc459"), "studentsEnrolled": 1034, "location": { state: "NY", city: "New York" } }
location
フィールドは、埋め込みフィールドcity
とstate
を含む埋め込みドキュメントです。 次のコマンドを実行すると、 location
フィールド全体にインデックスが作成されます。
db.schools.createIndex( { location: 1 } )
次のクエリでは、 location
フィールドのインデックスを使用できます。
db.schools.find( { location: { city: "New York", state: "NY" } } )
注意
クエリはインデックスを使用できますが、結果セットには上記のサンプル ドキュメントは含まれません。 埋め込みドキュメントで等価一致を実行する場合は、フィールドの順序が重要であり、埋め込みドキュメントは完全に一致する必要があります。 埋め込みドキュメントに対するクエリの詳細については、「 埋め込みドキュメントのクエリ 」を参照してください。
その他の考慮事項
インデックスの構築中に、アプリケーションはインデックスが作成されるコレクションへのパフォーマンスの低下や読み取り/書き込みアクセスの制限が発生することがあります。
インデックス構築プロセスの詳細については、「入力済みコレクションでのインデックス構築 」、特に「 レプリケートされた環境でのインデックス構築 」セクションを参照してください。
一部のドライバーは、インデックス順序を指定するために、NumberLong(1)
ではなく1
を使用します。結果として得られるインデックスは同じです。