Definição
dropIndexesAlterado na versão 6.0.
O comando
dropIndexeselimina um ou mais índices (exceto o índice no campo_ide o último índice de chave de shard restante, se houver) da collection especificada.Dica
Em
mongosh, esse comando também pode ser executado por meio dos métodos assistentedb.collection.dropIndex()edb.collection.dropIndexes().Os métodos auxiliares são convenientes para os usuários
mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados . Nos casos em que a conveniência não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem
Observação
Este comando é suportado em todos os clusters do MongoDB Atlas . Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { dropIndexes: <string>, index: <string|document|arrayofstrings>, writeConcern: <document>, comment: <any> } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
dropIndexes | String | O nome da collection cujos índices serão eliminados. |
index | string ou documento ou array de strings | O índice ou os índices a serem eliminados.
|
writeConcern | documento | |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Comportamento
A partir do MongoDB 8.3, dropIndexes é idempotente. Se você especificar um índice que não existe, dropIndexes ignorará o índice inexistente e concluirá com êxito em vez de retornar um erro IndexNotFound. Nas versões anteriores, dropIndexes retorna um erro IndexNotFound se o índice especificado não existir.
A partir do MongoDB 6.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.
Você pode usar 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 criação de índice em andamento resulta em um erro BackgroundOperationInProgressForNamespace.
Elimine apenas consultas relacionadas
A operação dropIndexes encerra apenas as queries que usam o índice a ser descartado. Isso pode incluir queries considerando o índice como parte do planejamento de consultas.
Bloqueio de recursos
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 dropIndexes libere o bloqueio.
Nomes de índice
A partir do MongoDB 8.3, se uma array de nomes de índice incluir um índice inexistente, dropIndexes ignorará o índice inexistente e descartará os índices especificados restantes.
_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.
Interromper construções de índice em andamento
Se um índice especificado para dropIndexes ainda estiver em construção, dropIndexes tentará interromper 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 dropIndexes no primário. O primário interrompe a construção do índice e cria um "abortIndexBuild" entrada oplog. Secundários que replicam o "abortIndexBuild" A entrada do oplog interrompe a construção do índice em andamento e descarta o tarefa 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.
Exemplos
Para eliminar todos os índices que não sejam
_id, especifique"*"paraindex.db.runCommand( { dropIndexes: "collection", index: "*" } ) Para eliminar um único índice, emita o comando especificando o nome do índice que você deseja eliminar. Por exemplo, para eliminar o índice denominado
age_1, utilize o seguinte comando:db.runCommand( { dropIndexes: "collection", index: "age_1" }) mongoshfornece os métodos assistentedb.collection.dropIndex()edb.collection.dropIndexes():db.collection.dropIndex("age_1"); Para eliminar vários índices, emita o comando especificando um array de nomes de índice:
db.runCommand( { dropIndexes: "collection", index: [ "age_1", "age_1_status_1" ] } )