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

Příkaz MongoDB dropIndexes

MongoDB má administrační příkaz s názvem dropIndexes který zahodí jeden nebo více indexů (kromě indexu na _id pole) ze zadané kolekce.

Příklady indexů

Předpokládejme, že máme kolekci nazvanou posts s následujícími indexy:

db.pets.getIndexes()

Výsledek:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1
		},
		"name" : "title_1"
	},
	{
		"v" : 2,
		"key" : {
			"tags" : 1
		},
		"name" : "tags_1"
	},
	{
		"v" : 2,
		"key" : {
			"_fts" : "text",
			"_ftsx" : 1
		},
		"name" : "body_text",
		"weights" : {
			"body" : 1
		},
		"default_language" : "english",
		"language_override" : "language",
		"textIndexVersion" : 3
	}
]

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.

Ostatní tři indexy mohou být zrušeny.

Vypustit jeden index

Chcete-li zrušit jeden index, předejte název kolekce a také název indexu nebo dokument s jeho specifikací.

Příklad:

db.runCommand( { dropIndexes: "posts", index: "title_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 použít dokument specifikace indexu místo jeho názvu, takto:

db.runCommand( { dropIndexes: "posts", index: { "title" : 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.runCommand( { 
  dropIndexes: "posts", 
  index: [ "tags_1", "body_text" ] 
})

Výsledek:

{ "nIndexesWas" : 3, "ok" : 1 }

V této fázi znovu zkontrolujte náš seznam indexů:

db.posts.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).

Při předávání pole lze textové indexy zrušit pouze zadáním názvu indexu. V takových případech nemůžete vypustit textové indexy zadáním jejich dokumentu specifikace, jako můžete u jiných indexů.

Zrušit všechny indexy

Všechny indexy můžete zrušit pomocí zástupného znaku hvězdičky (* ).

Pro tento příklad jsem znovu vytvořil indexy. Takže indexy vypadají takto::

db.products.getIndexes()

Výsledek:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1
		},
		"name" : "title_1"
	},
	{
		"v" : 2,
		"key" : {
			"tags" : 1
		},
		"name" : "tags_1"
	},
	{
		"v" : 2,
		"key" : {
			"_fts" : "text",
			"_ftsx" : 1
		},
		"name" : "body_text",
		"weights" : {
			"body" : 1
		},
		"default_language" : "english",
		"language_override" : "language",
		"textIndexVersion" : 3
	}
]

Nyní zahodíme všechny indexy najednou:

db.runCommand( { dropIndexes: "posts", index: "*" })

Výsledek:

{
	"nIndexesWas" : 4,
	"msg" : "non-_id indexes dropped for collection",
	"ok" : 1
}

Všechny indexy byly zrušeny kromě _id index (tento index nelze vypustit).

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ý, který zůstává.

Dokumentace MongoDB

Další informace o dropIndexes naleznete v dokumentaci MongoDB příkaz.


  1. Draft.js – Nelze získat data z databáze. Chyba křížového původu

  2. Může celery celerybeat používat databázový plánovač bez Djanga?

  3. Jak mohu implementovat tuto jedinou souběžně distribuovanou frontu v jakékoli platformě MQ?

  4. Připojte řetězec na konec existujícího pole v MongoDB