Indexing
In Datenbanken sorgt ein Index dafür, dass Abfragen schneller durchgeführt werden können – ähnlich wie ein Inhaltsverzeichnis in einem Buch. Ohne Index müsste MongoDB alle Dokumente durchgehen (Full Collection Scan), was bei grossen Datenmengen sehr ineffizient ist.
Single Field Index
Ein Single Field Index wird auf ein einzelnes Feld in den Dokumenten angewendet. Er ist die einfachste Form eines Indexes und wird am häufigsten verwendet.
Die 1
steht fĂĽr aufsteigende Sortierung. Mit -1
wäre es absteigend.
Schnelle Suche nach einem bestimmten Wert (
email: "test@example.com"
)Auch geeignet fĂĽr Sortierungen (
sort({ email: 1 })
)
Compound Index
Ein Compound Index (zusammengesetzter Index) deckt mehrere Felder gleichzeitig ab.
Optimierung komplexer Queries mit mehreren Bedingungen
Effiziente Sortierungen nach mehreren Feldern
Text Index
Ein Text Index erlaubt die Volltextsuche in Zeichenfolgenfeldern. Er analysiert den Text (Tokenisierung, Normalisierung) und ermöglicht Suchanfragen mit natürlicher Sprache.
Pro Collection darf es nur einen Textindex geben.
Textindex unterstützt keine regulären Ausdrücke oder Teilzeichenfolgen.
Abfragen
Sortieren nach Relevanz
Bei Textsuchen berechnet MongoDB fĂĽr jedes Dokument einen Relevanz-Score basierend darauf, wie gut es zur Suchanfrage passt. Dieser Score kann ĂĽber das spezielle Feld textScore
abgerufen werden.
Das ist besonders hilfreich, wenn du dem Benutzer die relevantesten Treffer zuerst anzeigen möchtest – ähnlich wie bei einer Suchmaschine.
Hashed Index
Ein Hashed Index speichert einen Hashwert eines Felds. Er wird vor allem fĂĽr Sharding (Verteilung auf mehrere Server) verwendet.
Gleichmässige Verteilung der Daten im Cluster
Eignet sich nicht fĂĽr Bereichsanfragen (
$gt
,$lt
), da die Hashwerte keine Reihenfolge haben
Indexe verwalten
Du kannst dir alle Indexe einer Collection mit folgendem Befehl anzeigen lassen:
Das Resultat zeigt dir eine Liste aller vorhandenen Indexe inklusive Informationen wie Feldnamen, Sortierrichtung, Typ und Name des Index.
Wenn ein Index nicht mehr benötigt wird oder die Performance negativ beeinflusst, kann er mit folgendem Befehl gelöscht werden:
Mit dem folgenden Befehl können wir alle Indexe innerhalb einer Collection löschen:
Zuletzt aktualisiert