Definição
dropIndexesAlterado na versão 6.0.
The
dropIndexescommand drops one or more indexes (except the index on the_idfield and the last remaining shard key index, if one exists) from the specified collection.Dica
In
mongosh, this command can also be run through thedb.collection.dropIndex()anddb.collection.dropIndexes()helper methods..Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a 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,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 descarta todos os índices, exceto dropIndexes o _id índice e o último índice compatível com chave de shard restante, se houver.
A partir do MongoDB,5.2 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 construção de índice em andamento resulta em um BackgroundOperationInProgressForNamespace erro.
Elimine apenas consultas relacionadas
The dropIndexes operation only kills queries that are using the index being dropped. This may include queries considering the index as part of query planning.
Bloqueio de recursos
dropIndexes obtains an exclusive lock on the specified collection for the duration of the operation. All subsequent operations on the collection must wait until dropIndexes releases the lock.
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.
Interromper construções de índice em andamento
If an index specified to dropIndexes is still building, dropIndexes attempts to stop the in-progress build. Stopping an index build has the same effect as dropping the built index.
For replica sets, run dropIndexes on the primary. The primary stops the index build and creates an associated "abortIndexBuild" oplog entry. Secondaries which replicate the "abortIndexBuild" oplog entry stop the in-progress index build and discard the build job. See Index Build Process for detailed documentation on the index build process.
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" }) mongoshprovides the helper methodsdb.collection.dropIndex()anddb.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" ] } )