db.collection.dropIndexes()
Nesta página
Definição
db.collection.dropIndexes()
Importante
Método mongosh
Esta página documenta um método
mongosh
. Esta não é a documentação para comandos de banco de dados ou drivers específicos de idioma, como Node.js.Para o comando do banco de dados, consulte o comando
dropIndexes
.Para drivers de API do MongoDB, consulte a documentação do driver MongoDB específica do idioma.
Para a documentação de shell legada do
mongo
, consulte a documentação para a versão correspondente do MongoDB Server:Descarta o(s) index(es) especificado(s) (exceto o index no field
_id
e o último index de chave de estilhaço restante) de uma coleção.Você pode usar o método para:
Solte todos, exceto o índice
_id
de uma coleção.db.collection.dropIndexes() Solte um índice especificado de uma coleção. Para especificar o índice, você pode passar o método:
O documento de especificação do índice (a menos que o índice seja um índice de texto; nesse caso, use o nome do índice para descartar):
db.collection.dropIndexes( { a: 1, b: 1 } ) O nome do índice:
db.collection.dropIndexes( "a_1_b_1" ) Dica
Para obter os nomes dos índices, utilize o método
db.collection.getIndexes()
.
Descarte os índices especificados de uma coleção. Para especificar vários índices a serem descartados, passe ao método um array de nomes de índices:
db.collection.dropIndexes( [ "a_1_b_1", "a_1", "a_1__id_-1" ] ) Se a array de nomes de índice incluir um índice inexistente, o método errará sem eliminar nenhum dos índices especificados.
Dica
Para obter os nomes dos índices, utilize o método
db.collection.getIndexes()
.
O método
db.collection.dropIndexes()
usa o seguinte parâmetro opcional:ParâmetroTipoDescriçãoindexes
string ou documento ou array de stringsOpcional. Especifica o índice ou índices a serem eliminados.
Para descartar todos, exceto o índice _id da coleção, omita o parâmetro.
Para soltar um único índice, especifique o nome do índice, o documento de especificação do índice (a menos que o índice seja um índice de texto) ou uma array do nome do índice. Para descartar um índice de texto , especifique o nome do índice ou uma array do nome do índice em vez do documento de especificação do índice.
Para eliminar vários índices, especifique um array dos nomes dos índices.
Comportamento
A partir do MongoDB 6.0, db.collection.dropIndexes()
gera um erro se você tentar usá-lo para remover o último índice compatível com chave de shard restante. Passar "*"
para db.collection.dropIndexes()
descarta todos os índices, exceto o índice _id
e o último índice compatível com chave de shard restante, se houver.
A partir do MongoDB 5.2, você pode usar db.collection.dropIndexes()
para descartar índices existentes na mesma coleção, mesmo que haja uma criação em andamento em outro índice. Em versões anteriores, tentar descartar um índice diferente durante uma construção de índice em andamento resulta em um erro BackgroundOperationInProgressForNamespace
.
Elimine apenas consultas relacionadas
A operação dropIndexes()
encerra apenas as queries que estão usando o índice a ser descartado. Isso pode incluir queries considerando o índice como parte do planejamento de consultas.
Bloqueio de recursos
db.collection.dropIndexes()
obtém um bloqueio exclusivo na coleção especificada durante a operação. Todas as operações subsequentes na coleção devem aguardar até que db.collection.dropIndexes()
libere o trava.
Nomes de índice
Se for passada ao método um array de nomes de índices que inclua um índice inexistente, o método cometerá um erro sem descartar nenhum dos índices especificados.
_id
Índice
Você não pode eliminar o índice padrão no campo _id
.
Índices de texto
Para eliminar um índice de texto, especifique o nome do índice em vez do documento de especificação do índice.
Interromper construções de índice em andamento
Se um índice especificado para db.collection.dropIndexes()
ainda estiver construindo, o db.collection.dropIndexes()
tentará parar a construção em andamento. Parar uma construção de índice tem o mesmo efeito que descartar o índice construído.
Para conjuntos de réplicas, execute db.collection.dropIndexes()
no primário. O primário interrompe a construção do índice e cria uma entrada oplog "abortIndexBuild" associada. Os secundários que replicam a entrada oplog "abortIndexBuild" interrompem a construção do índice em andamento e descartam o trabalho de construção. Consulte Processo de construção de índices para obter documentação detalhada sobre o processo de construção de índices.
Utilize currentOp
para identificar as construções de índice associadas com uma operação do createIndexes
ou db.collection.createIndexes()
. Consulte Operações de indexação ativas para ver um exemplo.
Índices ocultos
O MongoDB oferece a capacidade de ocultar ou exibir índices do planejador de queries. Ao ocultar um índice do planejador, você pode avaliar o possível impacto da eliminação de um índice sem eliminá-lo.
Se após a avaliação o usuário decidir descartar o índice, você poderá descartar o índice oculto; ou seja, você não precisa exibi-lo primeiro para soltá-lo.
Se, no entanto, o impacto for negativo, o usuário poderá exibir o índice em vez de precisar recriá-lo. E, como são totalmente mantidos enquanto estão ocultos, os índices ficam imediatamente disponíveis para uso quando são exibidos.
Para obter mais informações sobre índices ocultos, consulte Índices ocultos.