1 つのフィールドにインデックスを作成すると、そのフィールドに対するクエリのパフォーマンスを向上させることができます。
単一フィールドインデックスを作成するには、db.collection.createIndex() メソッドを使用します。
db.<collection>.createIndex( { <field>: <sort-order> } )
始める前に
次のドキュメントを含むstudentsコレクションを作成します。
db.students.insertMany( [ { "name": "Alice", "gpa": 3.6, "location": { city: "Sacramento", state: "California" } }, { "name": "Bob", "gpa": 3.2, "location": { city: "Albany", state: "New York" } } ] )
手順
次の例は、次の方法を示しています。
1 つのフィールドでのインデックスの作成
たとえば、 GPAで学生を頻繁に検索する学校の管理者を考えてみましょう。 gpaフィールドにインデックスを作成すると、これらのクエリのパフォーマンスを向上させることができます。
db.students.createIndex( { gpa: 1 } )
結果
インデックスは、次のようなフィールドgpaを選択するクエリをサポートしています。
db.students.find( { gpa: 3.6 } ) db.students.find( { gpa: { $lt: 3.4 } } )
埋め込みフィールドでのインデックスを作成する
埋め込みドキュメント内のフィールドにインデックスを作成できます。 埋め込みフィールドのインデックスは、ドット表記を使用するクエリを実行できます。
location フィールドは、埋め込みフィールド city と stateを含む埋め込みドキュメントです。location.state フィールドにインデックスを作成します。
db.students.createIndex( { "location.state": 1 } )
結果
インデックスは、次のようなフィールドlocation.stateのクエリをサポートします。
db.students.find( { "location.state": "California" } ) db.students.find( { "location.city": "Albany", "location.state": "New York" } )