Latest web development tutorials

MongoDB abdeckenden Index Abfrage

Die offizielle MongoDB Dokumentbeschreibung, die folgende Abfrage ist eine Abfrage:

  • Alle Abfragefelder sind Teil des Index
  • Alle Felder in derselben Abfrage liefert den Index

Da alle in dem Abfragefeld angezeigt ist Teil des Index, MongoDB Datendateien, ohne die gesamten Spiel Suchbegriffen abzurufen und Abfrageergebnisse geben den gleichen Index.

Da der Index im RAM befinden, als der Zugriff auf Daten Daten viel schneller zu lesen, indem Dokumente aus dem Index zu scannen.


Verwenden Sie einen abdeckenden Index Abfrage

Zum Cap-Index Abfrage zu testen, verwenden Sie den folgenden Satz von Benutzern:

{
   "_id": ObjectId("53402597d852426020000002"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "gender": "M",
   "name": "Tom Benzamin",
   "user_name": "tombenzamin"
}

Wir schaffen eine gemeinsame Index Benutzer Sammlung, Feld Geschlecht und user_name:

>db.users.ensureIndex({gender:1,user_name:1})

Nun deckt der Index die folgende Abfrage:

>db.users.find({gender:"M"},{user_name:1,_id:0})

Das heißt, für die obige Abfrage, MongoDB wird nicht für eine Datenbank-Datei. Stattdessen extrahiert er die Daten aus dem Index, der eine sehr schnelle Datenabfrage ist.

Da unser Index, der die _id Feld nicht enthält, wird _id standardmäßig in der Abfrage zurückgegeben werden, können wir es in MongoDB Abfrageergebnisse ausschließen konzentrieren.

Die folgenden Beispiele sind nicht _id ausgeschlossen, wird die Abfrage nicht abgedeckt werden:

>db.users.find({gender:"M"},{user_name:1})

Schließlich, wenn die folgende Abfrage, kann die Abfrage nicht die Indexabdeckung verwenden:

  • Alle Indexfeld ist ein Array
  • Alle Sub-Index-Feld ist ein Dokument