MongoDB - Indizierung
Indizes unterstützen die effiziente Lösung von Abfragen. Ohne Indizes muss MongoDB jedes Dokument einer Sammlung scannen, um die Dokumente auszuwählen, die der Abfrageanweisung entsprechen. Dieser Scan ist äußerst ineffizient und erfordert, dass MongoDB ein großes Datenvolumen verarbeitet.
Indizes sind spezielle Datenstrukturen, in denen ein kleiner Teil des Datensatzes in leicht zu durchlaufender Form gespeichert wird. Der Index speichert den Wert eines bestimmten Felds oder einer Reihe von Feldern, geordnet nach dem Wert des Feldes, wie im Index angegeben.
Die Methode createIndex ()
Um einen Index zu erstellen, müssen Sie die Methode createIndex () von MongoDB verwenden.
Syntax
Die grundlegende Syntax von createIndex() Methode ist wie folgt ().
>db.COLLECTION_NAME.createIndex({KEY:1})
Hier ist der Schlüssel der Name des Feldes, für das Sie einen Index erstellen möchten, und 1 steht für aufsteigende Reihenfolge. Um einen Index in absteigender Reihenfolge zu erstellen, müssen Sie -1 verwenden.
Beispiel
>db.mycol.createIndex({"title":1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
>
Im createIndex() Methode können Sie mehrere Felder übergeben, um einen Index für mehrere Felder zu erstellen.
>db.mycol.createIndex({"title":1,"description":-1})
>
Diese Methode akzeptiert auch eine Liste von Optionen (die optional sind). Es folgt die Liste -
Parameter | Art | Beschreibung |
---|---|---|
Hintergrund | Boolescher Wert | Erstellt den Index im Hintergrund, sodass beim Erstellen eines Index andere Datenbankaktivitäten nicht blockiert werden. Geben Sie true an, um im Hintergrund zu erstellen. Der Standardwert istfalse. |
einzigartig | Boolescher Wert | Erstellt einen eindeutigen Index, sodass die Sammlung das Einfügen von Dokumenten nicht akzeptiert, bei denen der Indexschlüssel oder die Indexschlüssel mit einem vorhandenen Wert im Index übereinstimmen. Geben Sie true an, um einen eindeutigen Index zu erstellen. Der Standardwert istfalse. |
Name | Zeichenfolge | Der Name des Index. Wenn nicht angegeben, generiert MongoDB einen Indexnamen, indem die Namen der indizierten Felder und die Sortierreihenfolge verkettet werden. |
spärlich | Boolescher Wert | Wenn true, verweist der Index nur auf Dokumente mit dem angegebenen Feld. Diese Indizes benötigen weniger Speicherplatz, verhalten sich jedoch in bestimmten Situationen (insbesondere bei Sortierungen) anders. Der Standardwert istfalse. |
expireAfterSeconds | ganze Zahl | Gibt einen Wert in Sekunden als TTL an, um zu steuern, wie lange MongoDB Dokumente in dieser Sammlung aufbewahrt. |
Gewichte | Dokument | Das Gewicht ist eine Zahl im Bereich von 1 bis 99.999 und gibt die Bedeutung des Feldes im Verhältnis zu den anderen indizierten Feldern in Bezug auf die Punktzahl an. |
Standardsprache | Zeichenfolge | Bei einem Textindex die Sprache, die die Liste der Stoppwörter und die Regeln für den Stemmer und den Tokenizer bestimmt. Der Standardwert istEnglish. |
language_override | Zeichenfolge | Geben Sie für einen Textindex den Namen des Felds im Dokument an, das die Sprache enthält, in der die Standardsprache überschrieben werden soll. Der Standardwert ist language. |
Die dropIndex () -Methode
Sie können einen bestimmten Index mit der dropIndex () -Methode von MongoDB löschen.
Syntax
Die grundlegende Syntax der DropIndex () -Methode lautet wie folgt ().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Hier ist der Schlüssel der Name der Datei, für die Sie einen Index erstellen möchten, und 1 steht für aufsteigende Reihenfolge. Um einen Index in absteigender Reihenfolge zu erstellen, müssen Sie -1 verwenden.
Beispiel
> db.mycol.dropIndex({"title":1})
{
"ok" : 0,
"errmsg" : "can't find index with key: { title: 1.0 }",
"code" : 27,
"codeName" : "IndexNotFound"
}
Die dropIndexes () -Methode
Diese Methode löscht mehrere (angegebene) Indizes für eine Sammlung.
Syntax
Die grundlegende Syntax der DropIndexes () -Methode lautet wie folgt () -
>db.COLLECTION_NAME.dropIndexes()
Beispiel
Angenommen, wir haben 2 Indizes in der benannten mycol-Sammlung erstellt, wie unten gezeigt -
> db.mycol.createIndex({"title":1,"description":-1})
Das folgende Beispiel entfernt die oben erstellten Indizes von mycol -
>db.mycol.dropIndexes({"title":1,"description":-1})
{ "nIndexesWas" : 2, "ok" : 1 }
>
Die Methode getIndexes ()
Diese Methode gibt die Beschreibung aller Indizes in der Sammlung zurück.
Syntax
Es folgt die grundlegende Syntax der Methode getIndexes () -
db.COLLECTION_NAME.getIndexes()
Beispiel
Angenommen, wir haben 2 Indizes in der benannten mycol-Sammlung erstellt, wie unten gezeigt -
> db.mycol.createIndex({"title":1,"description":-1})
Das folgende Beispiel ruft alle Indizes in der Sammlung mycol ab -
> db.mycol.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.mycol"
},
{
"v" : 2,
"key" : {
"title" : 1,
"description" : -1
},
"name" : "title_1_description_-1",
"ns" : "test.mycol"
}
]
>