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" } )