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.