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.