sql >> Database >  >> NoSQL >> MongoDB

MongoDB dropIndexes Commando

MongoDB heeft een beheeropdracht genaamd dropIndexes die een of meer indexen laat vallen (behalve de index op de _id veld) uit de opgegeven verzameling.

Voorbeeldindexen

Stel dat we een verzameling hebben met de naam posts met de volgende indexen:

db.pets.getIndexes()

Resultaat:

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

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 worden verwijderd.

Laat een enkele index vallen

Om een ​​enkele index te verwijderen, geeft u de collectienaam door, evenals de indexnaam of het specificatiedocument.

Voorbeeld:

db.runCommand( { dropIndexes: "posts", index: "title_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 het document met de indexspecificatie kunnen gebruiken in plaats van de naam, zoals dit:

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

Meerdere indexen verwijderen

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

Voorbeeld:

db.runCommand( { 
  dropIndexes: "posts", 
  index: [ "tags_1", "body_text" ] 
})

Resultaat:

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

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

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

Bij het doorgeven van een array kunnen tekstindexen alleen worden verwijderd door de indexnaam op te geven. In dergelijke gevallen kunt u geen tekstindexen verwijderen door hun specificatiedocument op te geven, zoals bij andere indexen.

Alle indexen verwijderen

U kunt alle indexen verwijderen door het asterisk-jokerteken te gebruiken (* ).

Voor dit voorbeeld heb ik de indexen opnieuw gemaakt. Dus de indexen zien er als volgt uit::

db.products.getIndexes()

Resultaat:

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

Laten we nu alle indexen tegelijk laten vallen:

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

Resultaat:

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

Alle indexen zijn verwijderd behalve de _id index (die 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 overblijft.

MongoDB-documentatie

Zie de MongoDB-documentatie voor meer informatie over de dropIndexes commando.


  1. Stappen om MongoDB op Amazon Linux te installeren

  2. Hadoop-ecosysteem - Inleiding tot Hadoop-componenten

  3. Fatale fout:Klasse 'MongoDB\Driver\Manager' niet gevonden

  4. Tijdelijke fout in herdistributie van naam