MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

3 Möglichkeiten, einen Index in MongoDB zu erstellen

In MongoDB können Sie mithilfe von createIndex() einen Index für eine Sammlung erstellen Methode, die createIndexes() -Methode oder createIndexes Verwaltungsbefehl.

Der createIndex() Methode

Der db.collection.createIndex() -Methode erstellt einen Index für die angegebene Sammlung. Es ist ein Wrapper für createIndexes Verwaltungsbefehl.

Beispiel:

db.pets.createIndex( { weight: -1 } )

Dadurch wird ein Index für die Haustiersammlung erstellt. Es ist ein absteigender Index für das weight Feld. Wir wissen, dass es absteigend ist, weil wir -1 angegeben haben . Wenn wir 1 angegeben hätten es wäre aufsteigend gewesen.

Ein zusammengesetzter Index ist einer, der für mehrere Felder definiert ist. Sie können einen zusammengesetzten Index erstellen, indem Sie jedes Feld durch ein Komma trennen.

Beispiel:

db.pets.createIndex( { name: 1, type: -1 } )

Dadurch wird ein zusammengesetzter Index für name erstellt Feld (in aufsteigender Reihenfolge) und den type Feld (in absteigender Reihenfolge).

Der createIndexes() Methode

Die db.collection.createIndexes() -Methode erstellt einen oder mehrere Indizes für eine Sammlung. Diese Methode ist auch ein Wrapper für createIndexes Verwaltungsbefehl.

Wenn Sie Indizes mit createIndexes() erstellen -Methode müssen Sie die Felder in einem Array bereitstellen. Dies ist auch dann erforderlich, wenn Sie nur einen einzelnen Index erstellen.

Beispiel:

db.pets.createIndexes( [ { weight: -1 } ] )

Das macht dasselbe wie das erste Beispiel. Es erstellt einen absteigenden Index für das weight Feld.

Um mehrere Indizes zu erstellen, trennen Sie die Dokumente der einzelnen Indizes durch ein Komma.

Beispiel:

db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )

Sie können zusammengesetzte Indizes auch mit createIndexes() erstellen . Dazu definieren Sie einfach den zusammengesetzten Index innerhalb des Dokuments für diesen Index.

Daher könnten wir Folgendes tun:

db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )

Dadurch wird ein zusammengesetzter Index für name erstellt und type Felder und einen separaten Index für das weight Feld.

Die createIndexes Befehl

Die createIndexes Verwaltungsbefehl erstellt einen oder mehrere Indizes für eine Sammlung. Die beiden vorherigen Methoden sind Wrapper um diesen Befehl.

Daher können wir die createIndexes verwenden Befehl, um die Indizes zu erstellen, die wir in den vorherigen Beispielen gemacht haben.

Hier ist ein Beispiel für die Erstellung eines Indexes für name Feld:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1 },
        name: "idx_name_1"
      }
    ]
  }
)

In den vorherigen Beispielen haben wir MongoDB unsere Indizes benennen lassen, aber in diesem Fall haben wir den Index idx_name_1 genannt .

Hier ist ein Beispiel für das Erstellen mehrerer Indizes:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1, type: -1 },
        name: "idx_name_1_type_-1"
      },
      {
        key: { "weight" : -1 },
        name: "idx_weight_-1"
      }
    ]
  }
)

In diesem Fall ist der erste Index ein zusammengesetzter Index auf name und type Felder, und wir haben es idx_name_1_type_-1 genannt .

Der zweite Index bezieht sich auf das weight Feld und wir nannten es idx_weight_-1 .

Wildcard-Indizes

Alle drei oben genannten Ansätze unterstützen Wildcard-Indizes ab MongoDB 4.2 (die featureCompatibilityVersion muss mindestens 4.2 sein zum Erstellen von Wildcard-Indizes).

Wildcard-Indizes sind nützlich für Sammlungen, die unstrukturierte Daten mit unterschiedlichen Feldern in unterschiedlichen Hierarchien enthalten.

Beispiele finden Sie unter So erstellen Sie einen Wildcard-Index in MongoDB.

MongoDB-Dokumentation

Nachfolgend finden Sie Links zur MongoDB-Dokumentation für jeden der oben genannten Punkte:

  • db.collection.createIndex()
  • db.collection.createIndexes()
  • createIndexes