Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

db.collection.dropIndexes()

Nesta página

  • Definição
  • Comportamento

MongoDB com drivers

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
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âmetro
Tipo
Descrição

indexes

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.

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.

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.

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.

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.

Você não pode eliminar o índice padrão no campo _id .

Para eliminar um índice de texto, especifique o nome do índice em vez do documento de especificação do índice.

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.

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.

Voltar

db.collection.dropIndex