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

単一フィールド インデックス

項目一覧

  • 互換性
  • 単一フィールドでの昇順インデックスの作成
  • 埋め込みフィールドでのインデックスを作成する
  • 埋め込みドキュメントにインデックスを作成する
  • その他の考慮事項

MongoDB は、 ドキュメント コレクション 内の任意のフィールドのインデックスを完全にサポートしています。デフォルトでは、すべてのコレクションには_id フィールドのインデックスがあります。アプリケーションとユーザーは、重要なクエリや操作をサポートするために追加のインデックスを追加する場合があります。

このドキュメントでは、単一のフィールドの昇順および降順インデックスについて説明します。

``score`` フィールドのインデックスの図(昇順)。

でホストされている配置では、単一フィールド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フィールドは、埋め込みフィールドcitystateを含む埋め込みドキュメントです。 次のコマンドを実行すると、 locationフィールド全体にインデックスが作成されます。

db.schools.createIndex( { location: 1 } )

次のクエリでは、 locationフィールドのインデックスを使用できます。

db.schools.find( { location: { city: "New York", state: "NY" } } )

注意

クエリはインデックスを使用できますが、結果セットには上記のサンプル ドキュメントは含まれません。 埋め込みドキュメントで等価一致を実行する場合は、フィールドの順序が重要であり、埋め込みドキュメントは完全に一致する必要があります。 埋め込みドキュメントに対するクエリの詳細については、「 埋め込みドキュメントのクエリ 」を参照してください。

インデックスの構築中に、アプリケーションはインデックスが作成されるコレクションへのパフォーマンスの低下や読み取り/書き込みアクセスの制限が発生することがあります。

インデックス構築プロセスの詳細については、「入力済みコレクションでのインデックス構築 」、特に「 レプリケートされた環境でのインデックス構築 」セクションを参照してください。

一部のドライバーは、インデックス順序を指定するために、NumberLong(1) ではなく1 を使用します。結果として得られるインデックスは同じです。

戻る

Indexes