MongoDBのカバーインデックスクエリ
次のクエリをカバーする公式のMongoDBドキュメントの説明は、クエリです:
- すべてのクエリフィールドは、インデックスの一部であります
- 同じクエリ内のすべてのフィールドはインデックスを返します
すべてのクエリフィールドに表示されますので、全体の一致クエリ用語を取得し、同じインデックスを使用して、クエリ結果を返すためになくても、インデックス、MongoDBのデータファイルの一部です。
インデックスはRAMに常駐しているので、よりデータへのアクセスは、インデックスから文書をスキャンすることによって、はるかに高速にデータを読み出します。
カバリングインデックスのクエリを使用します
キャップインデックスクエリをテストするには、ユーザーの次のセットを使用します。
{ "_id": ObjectId("53402597d852426020000002"), "contact": "987654321", "dob": "01-01-1991", "gender": "M", "name": "Tom Benzamin", "user_name": "tombenzamin" }
私たちは共同インデックスのユーザーのコレクション、フィールドの性別とのuser_nameを作成します。
>db.users.ensureIndex({gender:1,user_name:1})
さて、インデックスは次のクエリをカバーします:
>db.users.find({gender:"M"},{user_name:1,_id:0})
つまり、上記のクエリのために、MongoDBはデータベースのファイルことはないだろうさ。 その代わりに、それは非常に高速なデータクエリでインデックスからデータを抽出します。
Googleのインデックスは_idフィールドが含まれていないので、_idは、クエリにデフォルトで返されます、我々はMongoDBのクエリの結果でそれを除外集中することができます。
次の例では、クエリがカバーされることはありません、_idを支配されていません。
>db.users.find({gender:"M"},{user_name:1})
最後に、次のクエリ場合は、クエリがインデックス・カバーリングを使用することはできません。
- すべてのインデックスフィールドは配列です すべてのサブインデックスフィールドが文書であります