db.collection.dropIndex()
Nesta página
MongoDB com drivers
Esta página documenta um método mongosh
. Para ver o método equivalente em um driver MongoDB, consulte a página correspondente da sua linguagem de programação:
Definição
db.collection.dropIndex(index)
Descarta ou remove o índice especificado de uma coleção.
Observação
Você não pode eliminar o índice padrão no campo
_id
.Você não pode especificar
db.collection.dropIndex("*")
para descartar todos os índices não_id
. Em vez disso, usedb.collection.dropIndexes()
.
Para obter o nome do índice ou o documento de especificação do índice para o método
db.collection.dropIndex()
, utilize o métododb.collection.getIndexes()
.O método
db.collection.dropIndex()
utiliza o seguinte parâmetro:ParâmetroTipoDescriçãoindex
string ou documentoObrigatório. Especifica o índice a a ser descartado. Você pode especificar o índice pelo nome do índice ou pelo documento de especificação do índice.
Para descartar um índice de texto, especifique o nome do índice.
Não é possível especificar
"*"
para descartar todos os índices que não sejam_id
. Usedb.collection.dropIndexes()
em vez disso.Se um índice especificado para
db.collection.dropIndex()
ainda estiver sendo construído,db.collection.dropIndex()
tentará interromper a construção em andamento. Interromper uma construção de índice tem o mesmo efeito que descartar o índice construído. Consulte Interromper as construções de índices em andamento para obter uma documentação mais completa.
Comportamento
A partir do MongoDB 5.2, você pode usar db.collection.dropIndex()
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
.
Bloqueio de recursos
db.collection.dropIndex()
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.dropIndex()
libere o bloqueio.
Interromper construções de índice em andamento
Se um índice especificado para db.collection.dropIndex()
ainda estiver compilando, db.collection.dropIndex()
tentará parar a compilação em andamento. Interromper uma compilação de índice tem o mesmo efeito que descartar o índice compilado.
Para conjuntos de réplicas, execute db.collection.dropIndex()
no primário. O primário interrompe a construção do índice e cria uma entradaoplog "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.
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.
Exemplo
Considere uma coleção pets
. Chamando o método db.collection.getIndexes()
na coleção pets
retorna os seguintes índices:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "cat" : -1 }, "name" : "catIdx" }, { "v" : 2, "key" : { "cat" : 1, "dog" : -1 }, "name" : "cat_1_dog_-1" } ]
O índice de campo único no campo cat
tem o nome especificado pelo usuário de catIdx
[1] e o documento de especificação do índice de { "cat" : -1 }
.
Para eliminar o índice catIdx
, você pode usar o nome do índice:
db.pets.dropIndex( "catIdx" )
Ou você pode usar o documento de especificação de índice { "cat" : -1 }
:
db.pets.dropIndex( { "cat" : -1 } )
[1] | Durante a criação do índice, se o usuário não especificar um nome de índice, o sistema gerará o nome concatenando o campo e o valor da chave do índice com um sublinhado, por exemplo. cat_1 . |