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.