sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB dropIndex()

I MongoDB, dropIndexes() metoden låter dig ta bort ett eller flera index från en samling.

För att ta bort ett enstaka index, skicka namnet på indexet eller dess definitions-/specifikationsdokument. Om det är ett textindex kan du bara ange indexnamnet.

För att ta bort flera index, skicka indexnamnen i en array.

För att ta bort alla index (förutom _id index), skicka inga argument.

Exempelindex

Anta att vi har en samling som heter pets . Vi kan använda getIndexes() för att se vilka index den har:

db.pets.getIndexes()

Resultat:

[
	{
		"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"
	}
]

I det här fallet har vi fyra index. Den första är standardindexet för _id fält. Det här indexet skapas automatiskt när du skapar en samling och det kan inte tas bort.

De andra tre indexen kan släppas.

Släpp ett enda index

För att ta bort ett enstaka index, skicka indexnamnet eller dess specifikationsdokument.

Exempel:

db.pets.dropIndexes("weight_-1")

I det här fallet skickar vi indexnamnet.

Körning som resulterar i följande utdata:

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

Detta talar om för oss att indexet togs bort.

Alternativt kunde vi ha släppt indexet genom att skicka dess specifikationsdokument:

db.pets.dropIndexes( { "weight" : -1 } )

Släpp flera index

Om du vill ta bort flera index, men inte alla index, skickar du indexnamnen i en array.

Exempel:

db.pets.dropIndexes( [ "type_1", "name_1" ])

Resultat:

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

I det här skedet, låt oss kontrollera vår lista med index igen:

db.pets.getIndexes()

Resultat:

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]

Som väntat har tre index tagits bort och det finns bara ett kvar (och det kan inte tas bort).

Släpp alla index

Du kan ta bort alla index genom att anropa dropIndexes() metod utan några argument.

För det här exemplet, låt oss släppa indexen på en samling som heter products . Denna samling har fyra index enligt följande:

db.products.getIndexes()

Resultat:

[
	{
		"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"
	}
]

Låt oss nu släppa alla index:

db.products.dropIndexes()

Resultat:

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

Som meddelandet antydde, togs alla index bort förutom _id index. Det här indexet kan inte tas bort.

Låt oss kontrollera indexen igen.

db.products.getIndexes()

Resultat:

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]

Som förväntat, _id index är det enda som finns kvar.

dropIndexes() Metoden är ett omslag runt dropIndexes kommando.

MongoDB-dokumentation

Se MongoDB-dokumentationen för mer information om dropIndexes() metod.


  1. få schemaattribut från Mongoose Model

  2. Installera MongoDB på Ubuntu 16.04

  3. Hur man startar mongo db på Windows

  4. AWS-hantering:Hur du sparar 30 % på dina MongoDB-värdkostnader