I MongoDB er dropIndexes()
metode giver dig mulighed for at slette et eller flere indekser fra en samling.
For at slette et enkelt indeks skal du videregive navnet på indekset eller dets definitions-/specifikationsdokument. Hvis det er et tekstindeks, kan du kun angive indeksnavnet.
For at slette flere indekser skal du videregive indeksnavnene i en matrix.
For at slette alle indekser (undtagen _id
). indeks), ikke videregive nogen argumenter.
Eksempler på indekser
Antag, at vi har en samling kaldet pets
. Vi kan bruge getIndexes()
for at se, hvilke indekser den har:
db.pets.getIndexes()
Resultat:
[ { "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" } ]
I dette tilfælde har vi fire indekser. Den første er standardindekset for _id
Mark. Dette indeks oprettes automatisk, når du opretter en samling, og det kan ikke slettes.
De tre andre indekser kan blive droppet.
Slip et enkelt indeks
For at slette et enkelt indeks skal du sende indeksnavnet eller dets specifikationsdokument.
Eksempel:
db.pets.dropIndexes("weight_-1")
I dette tilfælde videregiver vi indeksnavnet.
Kørsel, der resulterer i følgende output:
{ "nIndexesWas" : 4, "ok" : 1 }
Dette fortæller os, at indekset blev droppet.
Alternativt kunne vi have droppet indekset ved at sende dets specifikationsdokument:
db.pets.dropIndexes( { "weight" : -1 } )
Slet flere indekser
Hvis du vil slette flere indekser, men ikke alle indekser, skal du sende indeksnavnene i en matrix.
Eksempel:
db.pets.dropIndexes( [ "type_1", "name_1" ])
Resultat:
{ "nIndexesWas" : 3, "ok" : 1 }
Lad os på dette stadium gentjekke vores liste over indekser:
db.pets.getIndexes()
Resultat:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Som forventet er tre indeks blevet slettet, og der er kun ét tilbage (og det kan ikke slettes).
Slet alle indekser
Du kan droppe alle indekser ved at kalde dropIndexes()
metode uden nogen argumenter.
For dette eksempel, lad os slippe indekserne på en samling kaldet products
. Denne samling har fire indekser som følger:
db.products.getIndexes()
Resultat:
[ { "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" } ]
Lad os nu droppe alle indekser:
db.products.dropIndexes()
Resultat:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Som meddelelsen hentydede til, blev alle indekser slettet undtagen _id
indeks. Dette indeks kan ikke slettes.
Lad os tjekke indekserne igen.
db.products.getIndexes()
Resultat:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Som forventet, _id
indeks er den eneste tilbage.
dropIndexes()
metoden er en indpakning omkring dropIndexes
kommando.
MongoDB-dokumentation
Se MongoDB-dokumentationen for mere information om dropIndexes()
metode.