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.