Latest web development tutorials

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

最後に、次のクエリ場合は、クエリがインデックス・カバーリングを使用することはできません。

  • すべてのインデックスフィールドは配列です
  • すべてのサブインデックスフィールドが文書であります