MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB dropIndexes()


No MongoDB, o dropIndexes() O método permite descartar um ou mais índices de uma coleção.

Para eliminar um único índice, passe o nome do índice ou seu documento de definição/especificação. Se for um índice de texto, você só pode especificar o nome do índice.

Para eliminar vários índices, passe os nomes dos índices em uma matriz.

Para eliminar todos os índices (exceto o _id index), não passe nenhum argumento.

Exemplos de índices


Suponha que tenhamos uma coleção chamada pets . Podemos usar getIndexes() para ver quais índices ele tem:
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"
	}
]

Neste caso, temos quatro índices. O primeiro é o índice padrão para o _id campo. Esse índice é criado automaticamente quando você cria uma coleção e não pode ser descartado.

Os outros três índices podem ser descartado.

Solte um único índice


Para eliminar um único índice, passe o nome do índice ou seu documento de especificação.

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

Nesse caso, estamos passando o nome do índice.

A execução disso resulta na seguinte saída:
{ "nIndexesWas" : 4, "ok" : 1 }

Isso nos diz que o índice foi descartado.

Alternativamente, poderíamos ter descartado o índice passando seu documento de especificação:
db.pets.dropIndexes( { "weight" : -1 } )

Eliminar vários índices


Se você quiser eliminar vários índices, mas não todos os índices, passe os nomes dos índices em uma matriz.

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

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

Nesta fase, vamos verificar novamente nossa lista de índices:
db.pets.getIndexes()

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

Como esperado, três índices foram excluídos e resta apenas um (e não pode ser excluído).

Retirar todos os índices


Você pode eliminar todos os índices chamando o método dropIndexes() método sem argumentos.

Para este exemplo, vamos descartar os índices em uma coleção chamada products . Esta coleção tem quatro índices da seguinte forma:
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"
	}
]

Agora vamos eliminar todos os índices:
db.products.dropIndexes()

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

Como a mensagem aludia, todos os índices foram descartados, exceto o _id índice. Este índice não pode ser descartado.

Vamos verificar os índices novamente.
db.products.getIndexes()

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

Como esperado, o _id index é o único que resta.

O dropIndexes() método é um wrapper em torno do dropIndexes comando.

Documentação do MongoDB


Consulte a documentação do MongoDB para obter mais informações sobre o dropIndexes() método.