Dieses Kapitel führt in MongoDB-Indizes ein. Ähnlich wie bei MYSQL unterstützt MongoDB auch Indizes. Der Unterschied besteht darin, dass MongoDB die Hinzufügung von Indizes zu einem beliebigen verschachtelten Feld der JSON-Struktur unterstützt, mit dem gleichen Zweck, die Abfrageeffizienz zu verbessern.

Arten von MongoDB-Indizes

Einzelfeldindex

Ähnlich wie bei MYSQL wird ein Index für ein einzelnes Feld erstellt.

Format:

db.collection.createIndex( { feldname: sortierrichtung(1 oder -1) } )

Hinweis: Sortierrichtung 1 repräsentiert die aufsteigende Reihenfolge, und -1 repräsentiert die absteigende Reihenfolge.

Beispiel 1:

db.records.createIndex( { score: 1 } )

Erstellt einen Index für das Feld "score".

Beispiel 2:

db.records.createIndex( { "location.state": 1 } )

Erstellt einen Index für das verschachtelte JSON-Feld "location.state".

Zusammengesetzter Index

Ähnlich wie bei MYSQL können mehrere Felder kombiniert werden, um einen Index zu erstellen und die Geschwindigkeit von Compound-Abfragen zu beschleunigen.

Format:

db.collection.createIndex( { <feld1>: <typ>, <feld2>: <typ2>, ... } )

Beispiel:

db.products.createIndex( { "item": 1, "stock": 1 } )

Erstellt einen zusammengesetzten Index für die Felder "item" und "stock", beide in aufsteigender Reihenfolge (1 repräsentiert die aufsteigende Reihenfolge).

Textindex (Volltextindex)

Der Textindex (text) wird hauptsächlich zur Unterstützung der Volltextsuche verwendet.

Hinweis: Eine Sammlung erlaubt nur einen Textindex, aber ein Textindex kann mehrere Felder enthalten.

Beispiel:

db.stores.createIndex( { name: "text", description: "text" } )

Erstellt einen Volltextindex für die Felder "name" und "description".

Hinweis: Für Details siehe Abschnitt Volltextindex.

Raumindex (GEO-Index)

Hauptsächlich zur Unterstützung von geografischen Informations-bezogenen Abfragen verwendet, unterstützt hauptsächlich zwei Arten von Indizes: 2dsphere und 2d. Für Details siehe Abschnitt Geospatial Query.

Löschen von Indizes

Um alle Indizes in einer Sammlung aufzulisten:

db.pets.getIndexes()

Um den Indizes "catIdx" aus der Sammlung "pets" zu löschen:

db.pets.dropIndex( "catIdx" )