db.collection.dropIndexes()
Nesta página
MongoDB com drivers
Esta página documenta um mongosh
método. Para ver o método equivalente em um driver MongoDB , consulte a página correspondente para sua linguagem de programação:
Definição
db.collection.dropIndexes()
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 uma 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()
utiliza o seguinte parâmetro opcional:ParâmetroTipoDescriçãoindexes
string ou documento ou array de strings
Opcional. 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 descartar vários índices, especifique uma array com os nomes dos índices.
Comportamento
Não é possível descartar Ready
índices durante a construção de índice em andamento
A partir do MongoDB 5.0, dropIndexes
gera um erro se você tentar usá-lo para remover o último índice compatível com chave de shard restante. Passar "*"
para dropIndexes
descarta todos os índices, exceto o índice _id
e o último índice compatível com chave de shard restante, se houver.
Elimine apenas consultas relacionadas
A operação dropIndexes()
apenas elimina queries que estão usando o índice que está sendo descartado. Isso pode incluir queries considerando o índice como parte do planejamento de query.
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 bloqueio.
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
Index
Você não pode eliminar o índice padrão no campo _id
.
text Indexes
Para eliminar um índice de texto, especifique o nome do índice em vez do documento de especificação do índice.
Cancela Construções de Índices em Andamento
Novo na versão 4.4: Se um índice especificado para db.collection.dropIndexes()
ainda estiver construindo, o dropIndexes()
tentará abortar a construção em andamento. Abortar a construção de um índice tem o mesmo efeito que eliminar o índice criado. Antes do MongoDB 4.4, o dropIndexes()
retornaria um erro se a collection tivesse alguma construção de índice em andamento.
Para conjuntos de réplicas, execute dropIndexes()
no primário. A primária cancela a construção do índice e cria uma entrada de oplog "abortIndexBuild" associada. Os secundários que replicam a entrada oplog "abortIndexBuild" abortam a construção do índice em andamento e descartam o trabalho de construção. Consulte Processo de construção de índice para obter documentação detalhada sobre o processo de construção de índice e o momento específico para encerrar uma construção de índice em andamento.
Os índices especificados para dropIndexes()
devem ser o conjunto inteiro de compilações em andamento associadas a uma única operação createIndexes
ou db.collection.createIndexes()
. Para eliminar um índice específico de um conjunto de compilações em andamento relacionadas, aguarde até que as compilações do índice sejam concluídas e especifique esse índice para dropIndexes()
Por exemplo, uma operação createIndexes
/ createIndexes()
cria três índices. Supondo que todas as três compilações de índice estejam em andamento, dropIndexes()
deve especificar todos os três índices para abortar as compilações de índice e eliminá-las.
Use currentOp
para identificar as construções de índice associadas a uma operação createIndexes
/ createIndexes()
. Consulte Operações de indexação ativas para obter um exemplo.
Hidden Indexes
O MongoDB oferece a capacidade de ocultar ou exibir índices do planejador de query. Ao ocultar um índice do planejador, você pode avaliar o impacto potencial de descartar um índice sem realmente descartá-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 descartá-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.