Latest web development tutorials

MongoDB Indexierung

Betrachten Sie das folgende Dokumentsammlungen (Benutzer):

{
   "address": {
      "city": "Los Angeles",
      "state": "California",
      "pincode": "123"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "Tom Benzamin"
}

Das obige Dokument enthält Unterlagen, und eine Reihe von Tags adressieren.


Indizierte Array-Feld

Angenommen, wir benutzerbasierte Etikett abrufen, für die wir die Sammlung Array-Tags Index benötigen.

Erstellen Sie einen Index im Array, das Array von Bedürfnissen für jedes Feld wiederum indiziert. Wenn wir also einen Index für die Array-Tags erstellen, bieten sie Musik, Cricket, Blogs drei Werte einen separaten Index zu etablieren.

Erstellen Sie ein Array-Index, verwenden Sie den folgenden Befehl ein:

>db.users.ensureIndex({"tags":1})

Nachdem der Index erstellt haben, können wir das Tag-Feld Sammlung abzurufen:

>db.users.find({tags:"cricket"})

Wir nutzten die Verwendung des Index, um zu überprüfen, können Sie den Befehl erklären verwenden:

>db.users.find({tags:"cricket"}).explain()

Die Ergebnisse der obigen Befehl wird "Cursor": "BtreeCursor tags_1", sagte er der Index verwendet wurde.


Index Sub-Dokumentfeld

Angenommen, wir brauchen Stadt, Staat, PIN-Code-Feld zum Abrufen von Dokumenten, da diese Felder Felder sind Filialdokument, also brauchen wir eine Filial Indizierung.

Erstellen eines Index für die drei Unterfelder des Dokuments, wird der Befehl wie folgt:

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

Nachdem der Index erstellt wird, können wir das Feld verwenden, um die Datenunterlagen zu erhalten:

>db.users.find({"address.city":"Los Angeles"})   

Denken Sie daran, Abfrageausdruck muss die Reihenfolge der angegebenen Index folgen. So ist der Index oben erstellt wird die folgende Abfrage unterstützen:

>db.users.find({"address.city":"Los Angeles","address.state":"California"}) 

Auch unterstützt die folgende Abfrage:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})