MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

In MongoDB, dropIndexes() consente di eliminare uno o più indici da una raccolta.

Per eliminare un singolo indice, passare il nome dell'indice o il relativo documento di definizione/specifica. Se è un indice di testo, puoi solo specificare il nome dell'indice.

Per eliminare più indici, passare i nomi degli indici in una matrice.

Per eliminare tutti gli indici (tranne per _id index), non passare alcun argomento.

Indici di esempio

Supponiamo di avere una collezione chiamata pets . Possiamo usare getIndexes() per vedere quali indici ha:

db.pets.getIndexes()

Risultato:

[
	{
		"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 questo caso abbiamo quattro indici. Il primo è l'indice predefinito per _id campo. Questo indice viene creato automaticamente quando crei una raccolta e non può essere eliminato.

Gli altri tre indici possono essere abbandonato.

Rilascia un singolo indice

Per eliminare un singolo indice, passa il nome dell'indice o il relativo documento delle specifiche.

Esempio:

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

In questo caso, stiamo passando il nome dell'indice.

L'esecuzione che comporta il seguente output:

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

Questo ci dice che l'indice è stato eliminato.

In alternativa, avremmo potuto eliminare l'indice passando il suo documento di specificazione:

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

Rilascia più indici

Se desideri eliminare più indici, ma non tutti, passa i nomi degli indici in un array.

Esempio:

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

Risultato:

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

A questo punto, controlliamo nuovamente il nostro elenco di indici:

db.pets.getIndexes()

Risultato:

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

Come previsto, sono stati eliminati tre indici e ne è rimasto solo uno (e non può essere eliminato).

Elimina tutti gli indici

Puoi eliminare tutti gli indici chiamando dropIndexes() metodo senza argomenti.

Per questo esempio, lasciamo cadere gli indici su una raccolta chiamata products . Questa raccolta ha quattro indici come segue:

db.products.getIndexes()

Risultato:

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

Ora lasciamo cadere tutti gli indici:

db.products.dropIndexes()

Risultato:

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

Come alludeva il messaggio, tutti gli indici sono stati eliminati ad eccezione di _id indice. Questo indice non può essere eliminato.

Controlliamo di nuovo gli indici.

db.products.getIndexes()

Risultato:

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

Come previsto, il _id index è l'unico rimasto.

Il dropIndexes() è un wrapper attorno a dropIndexes comando.

Documentazione MongoDB

Consulta la documentazione di MongoDB per ulteriori informazioni su dropIndexes() metodo.