sql >> Base de Datos >  >> NoSQL >> MongoDB

DropIndexes de MongoDB()

En MongoDB, dropIndexes() El método le permite eliminar uno o más índices de una colección.

Para descartar un solo índice, pase el nombre del índice o su documento de definición/especificación. Si es un índice de texto, solo puede especificar el nombre del índice.

Para eliminar varios índices, pase los nombres de los índices en una matriz.

Para eliminar todos los índices (excepto el _id índice), no pase ningún argumento.

Índices de ejemplo

Supongamos que tenemos una colección llamada pets . Podemos usar getIndexes() para ver que índices tiene:

db.pets.getIndexes()

Resultado:

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

En este caso tenemos cuatro índices. El primero es el índice predeterminado para el _id campo. Este índice se crea automáticamente cuando crea una colección y no se puede eliminar.

Los otros tres índices pueden ser descartado.

Soltar un solo índice

Para descartar un solo índice, pase el nombre del índice o su documento de especificación.

Ejemplo:

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

En este caso, estamos pasando el nombre del índice.

Ejecutar eso da como resultado el siguiente resultado:

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

Esto nos dice que el índice se eliminó.

Alternativamente, podríamos haber descartado el índice pasando su documento de especificación:

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

Soltar varios índices

Si desea eliminar varios índices, pero no todos los índices, pase los nombres de los índices en una matriz.

Ejemplo:

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

Resultado:

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

En esta etapa, volvamos a revisar nuestra lista de índices:

db.pets.getIndexes()

Resultado:

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

Como era de esperar, se han eliminado tres índices y solo queda uno (y no se puede eliminar).

Eliminar todos los índices

Puede eliminar todos los índices llamando a dropIndexes() método sin argumentos.

Para este ejemplo, coloquemos los índices en una colección llamada products . Esta colección tiene cuatro índices de la siguiente manera:

db.products.getIndexes()

Resultado:

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

Ahora eliminemos todos los índices:

db.products.dropIndexes()

Resultado:

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

Como aludía el mensaje, todos los índices se eliminaron excepto el _id índice. Este índice no se puede descartar.

Revisemos los índices nuevamente.

db.products.getIndexes()

Resultado:

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

Como era de esperar, el _id index es el único que queda.

Los dropIndexes() El método es un contenedor alrededor de dropIndexes comando.

Documentación de MongoDB

Consulte la documentación de MongoDB para obtener más información sobre dropIndexes() método.