V MongoDB, dropIndexes()
umožňuje vypustit jeden nebo více indexů z kolekce.
Chcete-li zrušit jeden index, předejte název indexu nebo jeho definiční/specifikační dokument. Pokud se jedná o textový index, můžete zadat pouze název indexu.
Chcete-li zrušit více indexů, předejte názvy indexů v poli.
Chcete-li zrušit všechny indexy (kromě _id
index), nepředávejte žádné argumenty.
Příklady indexů
Předpokládejme, že máme sbírku nazvanou pets
. Můžeme použít getIndexes()
abyste viděli, jaké indexy má:
db.pets.getIndexes()
Výsledek:
[ { "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" } ]
V tomto případě máme čtyři indexy. První je výchozí index pro _id
pole. Tento index se vytvoří automaticky při vytváření kolekce a nelze jej zrušit.
Další tři indexy umí být vypuštěn.
Vypustit jeden index
Chcete-li zrušit jeden index, předejte název indexu nebo dokument s jeho specifikací.
Příklad:
db.pets.dropIndexes("weight_-1")
V tomto případě předáváme název indexu.
Výsledkem spuštění je následující výstup:
{ "nIndexesWas" : 4, "ok" : 1 }
To nám říká, že index byl zrušen.
Alternativně jsme mohli index vypustit předáním jeho dokumentu specifikace:
db.pets.dropIndexes( { "weight" : -1 } )
Vypustit více indexů
Pokud chcete zrušit více indexů, ale ne všechny indexy, předejte názvy indexů v poli.
Příklad:
db.pets.dropIndexes( [ "type_1", "name_1" ])
Výsledek:
{ "nIndexesWas" : 3, "ok" : 1 }
V této fázi znovu zkontrolujte náš seznam indexů:
db.pets.getIndexes()
Výsledek:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Podle očekávání byly smazány tři indexy a zbyl pouze jeden (a nelze jej smazat).
Zrušit všechny indexy
Všechny indexy můžete zrušit voláním dropIndexes()
metoda bez jakýchkoli argumentů.
V tomto příkladu přemístěme indexy na kolekci nazvanou products
. Tato kolekce má čtyři následující indexy:
db.products.getIndexes()
Výsledek:
[ { "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" } ]
Nyní vynecháme všechny indexy:
db.products.dropIndexes()
Výsledek:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Jak zpráva zmiňovala, všechny indexy byly zrušeny kromě _id
index. Tento index nelze zrušit.
Pojďme znovu zkontrolovat indexy.
db.products.getIndexes()
Výsledek:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Jak se očekávalo, _id
index je jediný zbylý.
dropIndexes()
metoda je obal kolem dropIndexes
příkaz.
Dokumentace MongoDB
Další informace o dropIndexes()
naleznete v dokumentaci MongoDB metoda.