MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

In MongoDB die dropIndexes() -Methode können Sie einen oder mehrere Indizes aus einer Sammlung löschen.

Um einen einzelnen Index zu löschen, übergeben Sie den Namen des Index oder dessen Definitions-/Spezifikationsdokument. Wenn es sich um einen Textindex handelt, können Sie nur den Indexnamen angeben.

Um mehrere Indizes zu löschen, übergeben Sie die Indexnamen in einem Array.

Um alle Indizes zu löschen (außer _id index), keine Argumente übergeben.

Beispielindizes

Angenommen, wir haben eine Sammlung namens pets . Wir können getIndexes() verwenden um zu sehen, welche Indizes es hat:

db.pets.getIndexes()

Ergebnis:

[
	{
		"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 diesem Fall haben wir vier Indizes. Der erste ist der Standardindex für die _id Feld. Dieser Index wird automatisch erstellt, wenn Sie eine Sammlung erstellen, und kann nicht gelöscht werden.

Die anderen drei Indizes können gelöscht werden.

Einen einzelnen Index löschen

Um einen einzelnen Index zu löschen, übergeben Sie den Indexnamen oder sein Spezifikationsdokument.

Beispiel:

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

In diesem Fall übergeben wir den Indexnamen.

Das Ausführen führt zu folgender Ausgabe:

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

Dies sagt uns, dass der Index gelöscht wurde.

Alternativ hätten wir den Index löschen können, indem wir sein Spezifikationsdokument übergeben hätten:

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

Mehrere Indizes löschen

Wenn Sie mehrere Indizes löschen möchten, aber nicht alle Indizes, übergeben Sie die Indexnamen in einem Array.

Beispiel:

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

Ergebnis:

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

Sehen wir uns zu diesem Zeitpunkt noch einmal unsere Indexliste an:

db.pets.getIndexes()

Ergebnis:

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

Wie erwartet wurden drei Indizes gelöscht und es ist nur noch einer übrig (und er kann nicht gelöscht werden).

Alle Indizes löschen

Sie können alle Indizes löschen, indem Sie dropIndexes() aufrufen Methode ohne Argumente.

Lassen Sie uns für dieses Beispiel die Indizes für eine Sammlung namens products löschen . Diese Sammlung hat die folgenden vier Indizes:

db.products.getIndexes()

Ergebnis:

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

Lassen Sie uns nun alle Indizes löschen:

db.products.dropIndexes()

Ergebnis:

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

Wie die Meldung anspielte, wurden alle Indizes bis auf die _id gelöscht Index. Dieser Index kann nicht gelöscht werden.

Lassen Sie uns die Indizes noch einmal überprüfen.

db.products.getIndexes()

Ergebnis:

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

Wie erwartet, die _id index ist der einzige, der noch übrig ist.

Die dropIndexes() Methode ist ein Wrapper um die dropIndexes Befehl.

MongoDB-Dokumentation

Weitere Informationen zu dropIndexes() finden Sie in der MongoDB-Dokumentation Methode.