In MongoDB, de dropIndexes()
methode stelt u in staat een of meer indexen uit een verzameling te verwijderen.
Als u een enkele index wilt verwijderen, geeft u de naam van de index of het definitie-/specificatiedocument door. Als het een tekstindex is, kunt u alleen de indexnaam specificeren.
Als u meerdere indexen wilt verwijderen, geeft u de indexnamen door in een array.
Om alle indexen te verwijderen (behalve de _id
index), geef geen argumenten door.
Voorbeeldindexen
Stel dat we een verzameling hebben met de naam pets
. We kunnen getIndexes()
. gebruiken om te zien welke indexen het heeft:
db.pets.getIndexes()
Resultaat:
[ { "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 dit geval hebben we vier indexen. De eerste is de standaardindex voor de _id
veld. Deze index wordt automatisch gemaakt wanneer u een collectie maakt en kan niet worden verwijderd.
De andere drie indexen kunnen laten vallen.
Laat een enkele index vallen
Als u een enkele index wilt verwijderen, geeft u de indexnaam of het bijbehorende specificatiedocument door.
Voorbeeld:
db.pets.dropIndexes("weight_-1")
In dit geval geven we de indexnaam door.
Uitvoeren dat resulteert in de volgende uitvoer:
{ "nIndexesWas" : 4, "ok" : 1 }
Dit vertelt ons dat de index is verwijderd.
Als alternatief hadden we de index kunnen laten vallen door het specificatiedocument door te geven:
db.pets.dropIndexes( { "weight" : -1 } )
Meerdere indexen verwijderen
Als u meerdere indexen wilt verwijderen, maar niet alle indexen, geeft u de indexnamen door in een array.
Voorbeeld:
db.pets.dropIndexes( [ "type_1", "name_1" ])
Resultaat:
{ "nIndexesWas" : 3, "ok" : 1 }
Laten we in dit stadium onze lijst met indexen nog eens bekijken:
db.pets.getIndexes()
Resultaat:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Zoals verwacht zijn er drie indexen verwijderd en is er nog maar één over (en die kan niet worden verwijderd).
Alle indexen verwijderen
U kunt alle indexen verwijderen door de dropIndexes()
. aan te roepen methode zonder argumenten.
Laten we voor dit voorbeeld de indexen neerzetten op een verzameling met de naam products
. Deze verzameling heeft de volgende vier indexen:
db.products.getIndexes()
Resultaat:
[ { "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" } ]
Laten we nu alle indexen laten vallen:
db.products.dropIndexes()
Resultaat:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Zoals in het bericht werd gezinspeeld, werden alle indexen verwijderd, behalve de _id
inhoudsopgave. Deze index kan niet worden verwijderd.
Laten we de indexen nog eens bekijken.
db.products.getIndexes()
Resultaat:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Zoals verwacht, de _id
index is de enige die nog over is.
De dropIndexes()
methode is een wrapper rond de dropIndexes
commando.
MongoDB-documentatie
Zie de MongoDB-documentatie voor meer informatie over de dropIndexes()
methode.