Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

複合インデックスの作成

項目一覧

  • 制限
  • 始める前に
  • 手順
  • 結果
  • 詳細

複合インデックスは、複数のフィールドへの参照を含むインデックスです。 複合インデックスを使用すると、インデックス内のフィールドまたはインデックス プレフィックス内のフィールドのみに対するクエリのパフォーマンスが向上します。 よくクエリされるフィールドにインデックスを付けると、それらのクエリが対象となる 可能性が高くなります。つまり、MongoDB はドキュメントを検査せず、インデックスのみでクエリを満たすことができます。

複合インデックスを作成するには、 db.collection.createIndex()メソッドを使用します。

db.<collection>.createIndex( {
<field1>: <sortOrder>,
<field2>: <sortOrder>,
...
<fieldN>: <sortOrder>
} )

単一の複合インデックスで最大32フィールドを指定できます。

これらのドキュメントを含む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" }
}
])

次の操作では、 フィールドと フィールドを含む複合インデックスが作成されます。namegpa

db.students.createIndex( {
name: 1,
gpa: -1
} )

この例では、次のことが行われます。

  • nameのインデックスは昇順( 1 )です。

  • gpaのインデックスは降順( -1 )です。

作成されたインデックスは、以下を選択するクエリをサポートします。

  • nameフィールドとgpaフィールドの両方。

  • nameフィールドのみ。 nameは複合インデックスのプレフィックスであるため。

たとえば、 インデックスは次のクエリをサポートしています。

db.students.find( { name: "Alice", gpa: 3.6 } )
db.students.find( { name: "Bob" } )

インデックスは、 gpaはインデックスのプレフィックスの一部ではないため、 gpaフィールドのみを対象とするクエリをサポートしていません。 たとえば、 インデックスは次のクエリをサポートしていません。

db.students.find( { gpa: { $gt: 3.5 } } )

戻る

複合