sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

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.


  1. MongoDB dotazuje více kolekcí najednou

  2. Mongoose:hluboká populace (obsadit obydlené pole)

  3. Vytvářejte, čtěte, aktualizujte, mažte data pomocí Node.js - Mongoose

  4. Jak se připojit k více sbírkám pomocí $lookup v mongodb