In MongoDB die dropIndexes()
-Methode können Sie einen oder mehrere Indizes aus einer Sammlung löschen.
Um einen einzelnen Index zu löschen, übergeben Sie den Namen des Index oder dessen Definitions-/Spezifikationsdokument. Wenn es sich um einen Textindex handelt, können Sie nur den Indexnamen angeben.
Um mehrere Indizes zu löschen, übergeben Sie die Indexnamen in einem Array.
Um alle Indizes zu löschen (außer _id
index), keine Argumente übergeben.
Beispielindizes
Angenommen, wir haben eine Sammlung namens pets
. Wir können getIndexes()
verwenden um zu sehen, welche Indizes es hat:
db.pets.getIndexes()
Ergebnis:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "type" : 1 }, "name" : "type_1" }, { "v" : 2, "key" : { "name" : 1 }, "name" : "name_1", "hidden" : true }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "weight_-1" } ]
In diesem Fall haben wir vier Indizes. Der erste ist der Standardindex für die _id
Feld. Dieser Index wird automatisch erstellt, wenn Sie eine Sammlung erstellen, und kann nicht gelöscht werden.
Die anderen drei Indizes können gelöscht werden.
Einen einzelnen Index löschen
Um einen einzelnen Index zu löschen, übergeben Sie den Indexnamen oder sein Spezifikationsdokument.
Beispiel:
db.pets.dropIndexes("weight_-1")
In diesem Fall übergeben wir den Indexnamen.
Das Ausführen führt zu folgender Ausgabe:
{ "nIndexesWas" : 4, "ok" : 1 }
Dies sagt uns, dass der Index gelöscht wurde.
Alternativ hätten wir den Index löschen können, indem wir sein Spezifikationsdokument übergeben hätten:
db.pets.dropIndexes( { "weight" : -1 } )
Mehrere Indizes löschen
Wenn Sie mehrere Indizes löschen möchten, aber nicht alle Indizes, übergeben Sie die Indexnamen in einem Array.
Beispiel:
db.pets.dropIndexes( [ "type_1", "name_1" ])
Ergebnis:
{ "nIndexesWas" : 3, "ok" : 1 }
Sehen wir uns zu diesem Zeitpunkt noch einmal unsere Indexliste an:
db.pets.getIndexes()
Ergebnis:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Wie erwartet wurden drei Indizes gelöscht und es ist nur noch einer übrig (und er kann nicht gelöscht werden).
Alle Indizes löschen
Sie können alle Indizes löschen, indem Sie dropIndexes()
aufrufen Methode ohne Argumente.
Lassen Sie uns für dieses Beispiel die Indizes für eine Sammlung namens products
löschen . Diese Sammlung hat die folgenden vier Indizes:
db.products.getIndexes()
Ergebnis:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "product.$**" : 1 }, "name" : "product.$**_1" }, { "v" : 2, "key" : { "sizes" : 1 }, "name" : "sizes_1" }, { "v" : 2, "key" : { "stock" : -1 }, "name" : "stock_-1" } ]
Lassen Sie uns nun alle Indizes löschen:
db.products.dropIndexes()
Ergebnis:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Wie die Meldung anspielte, wurden alle Indizes bis auf die _id
gelöscht Index. Dieser Index kann nicht gelöscht werden.
Lassen Sie uns die Indizes noch einmal überprüfen.
db.products.getIndexes()
Ergebnis:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Wie erwartet, die _id
index ist der einzige, der noch übrig ist.
Die dropIndexes()
Methode ist ein Wrapper um die dropIndexes
Befehl.
MongoDB-Dokumentation
Weitere Informationen zu dropIndexes()
finden Sie in der MongoDB-Dokumentation Methode.