W MongoDB funkcja dropIndexes()
metoda pozwala usunąć jeden lub więcej indeksów z kolekcji.
Aby usunąć pojedynczy indeks, podaj nazwę indeksu lub jego definicji/dokumentu specyfikacji. Jeśli jest to indeks tekstowy, możesz określić tylko nazwę indeksu.
Aby usunąć wiele indeksów, przekaż nazwy indeksów w tablicy.
Aby usunąć wszystkie indeksy (z wyjątkiem _id
indeks), nie przekazuj żadnych argumentów.
Przykładowe indeksy
Załóżmy, że mamy kolekcję o nazwie pets
. Możemy użyć getIndexes()
aby zobaczyć, jakie ma indeksy:
db.pets.getIndexes()
Wynik:
[ { "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" } ]
W tym przypadku mamy cztery indeksy. Pierwszy to domyślny indeks dla _id
pole. Ten indeks jest tworzony automatycznie podczas tworzenia kolekcji i nie można go usunąć.
Pozostałe trzy indeksy mogą zostać upuszczony.
Upuść pojedynczy indeks
Aby usunąć pojedynczy indeks, przekaż nazwę indeksu lub jego dokument specyfikacji.
Przykład:
db.pets.dropIndexes("weight_-1")
W tym przypadku przekazujemy nazwę indeksu.
Uruchomienie tego skutkuje następującymi danymi wyjściowymi:
{ "nIndexesWas" : 4, "ok" : 1 }
To mówi nam, że indeks został usunięty.
Alternatywnie moglibyśmy usunąć indeks, przekazując jego dokument specyfikacji:
db.pets.dropIndexes( { "weight" : -1 } )
Upuść wiele indeksów
Jeśli chcesz usunąć wiele indeksów, ale nie wszystkie, przekaż nazwy indeksów w tablicy.
Przykład:
db.pets.dropIndexes( [ "type_1", "name_1" ])
Wynik:
{ "nIndexesWas" : 3, "ok" : 1 }
Na tym etapie sprawdźmy ponownie naszą listę indeksów:
db.pets.getIndexes()
Wynik:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Zgodnie z oczekiwaniami, trzy indeksy zostały usunięte, a pozostał tylko jeden (i nie można go usunąć).
Upuść wszystkie indeksy
Możesz usunąć wszystkie indeksy, wywołując dropIndexes()
metoda bez żadnych argumentów.
W tym przykładzie upuśćmy indeksy na kolekcję o nazwie products
. Ta kolekcja ma cztery następujące indeksy:
db.products.getIndexes()
Wynik:
[ { "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" } ]
Teraz odrzućmy wszystkie indeksy:
db.products.dropIndexes()
Wynik:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Jak wspomniano w wiadomości, wszystkie indeksy zostały usunięte z wyjątkiem _id
indeks. Ten indeks nie może zostać usunięty.
Sprawdźmy jeszcze raz indeksy.
db.products.getIndexes()
Wynik:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Zgodnie z oczekiwaniami _id
pozostał tylko indeks.
dropIndexes()
metoda jest opakowaniem wokół dropIndexes
polecenie.
Dokumentacja MongoDB
Więcej informacji na temat dropIndexes()
można znaleźć w dokumentacji MongoDB metoda.