sql >> Database >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

In MongoDB, de dropIndexes() methode stelt u in staat een of meer indexen uit een verzameling te verwijderen.

Als u een enkele index wilt verwijderen, geeft u de naam van de index of het definitie-/specificatiedocument door. Als het een tekstindex is, kunt u alleen de indexnaam specificeren.

Als u meerdere indexen wilt verwijderen, geeft u de indexnamen door in een array.

Om alle indexen te verwijderen (behalve de _id index), geef geen argumenten door.

Voorbeeldindexen

Stel dat we een verzameling hebben met de naam pets . We kunnen getIndexes() . gebruiken om te zien welke indexen het heeft:

db.pets.getIndexes()

Resultaat:

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

In dit geval hebben we vier indexen. De eerste is de standaardindex voor de _id veld. Deze index wordt automatisch gemaakt wanneer u een collectie maakt en kan niet worden verwijderd.

De andere drie indexen kunnen laten vallen.

Laat een enkele index vallen

Als u een enkele index wilt verwijderen, geeft u de indexnaam of het bijbehorende specificatiedocument door.

Voorbeeld:

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

In dit geval geven we de indexnaam door.

Uitvoeren dat resulteert in de volgende uitvoer:

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

Dit vertelt ons dat de index is verwijderd.

Als alternatief hadden we de index kunnen laten vallen door het specificatiedocument door te geven:

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

Meerdere indexen verwijderen

Als u meerdere indexen wilt verwijderen, maar niet alle indexen, geeft u de indexnamen door in een array.

Voorbeeld:

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

Resultaat:

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

Laten we in dit stadium onze lijst met indexen nog eens bekijken:

db.pets.getIndexes()

Resultaat:

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

Zoals verwacht zijn er drie indexen verwijderd en is er nog maar één over (en die kan niet worden verwijderd).

Alle indexen verwijderen

U kunt alle indexen verwijderen door de dropIndexes() . aan te roepen methode zonder argumenten.

Laten we voor dit voorbeeld de indexen neerzetten op een verzameling met de naam products . Deze verzameling heeft de volgende vier indexen:

db.products.getIndexes()

Resultaat:

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

Laten we nu alle indexen laten vallen:

db.products.dropIndexes()

Resultaat:

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

Zoals in het bericht werd gezinspeeld, werden alle indexen verwijderd, behalve de _id inhoudsopgave. Deze index kan niet worden verwijderd.

Laten we de indexen nog eens bekijken.

db.products.getIndexes()

Resultaat:

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

Zoals verwacht, de _id index is de enige die nog over is.

De dropIndexes() methode is een wrapper rond de dropIndexes commando.

MongoDB-documentatie

Zie de MongoDB-documentatie voor meer informatie over de dropIndexes() methode.


  1. SocketTimeout met geopende verbinding in MongoDB

  2. Een redis-listener maken - mogelijk in php?

  3. Hoe doe ik meer dan/minder dan met MongoDB?

  4. Query op mongoid hash-veld