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"
	}
]
>