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

db.collection.validate()

Nesta página

  • Descrição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Exemplos

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:

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.validate(<documents>)

Valida uma coleção. O método escaneia os dados e índices de uma coleção para verificar se estão corretos e retorna o resultado. Para obter detalhes sobre a saída, consulte Validar saída.

A partir da versão 5.0, o método db.collection.validate() também pode corrigir inconsistências na coleção.

As inconsistências de índice incluem:

  • Um índice é multikey, mas não há campos multikey.

  • Um índice tem multikeyPaths cobrindo campos que não são multikey.

  • Um índice não tem multikeyPaths, mas existem documentos multikey (para índices construídos antes da versão 3.4).

Se alguma inconsistência for detectada pelo comando db.collection.validate(), será retornado um aviso e o sinalizador de reparo no índice será definido como true.

db.collection.validate() também valida todos os documentos que violam as regras de validação de esquema da coleção.

O método db.collection.validate() é um invólucro em torno do comando validate.

Esse método 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

O método db.collection.validate() tem a seguinte sintaxe:

db.collection.validate( {
full: <boolean>, // Optional
repair: <boolean> // Optional, added in MongoDB 5.0
} )

O método db.collection.validate() pode utilizar o seguinte parâmetro de documento opcional com os campos:

Campo
Tipo
Descrição

booleano

Opcional. Um sinalizador que determina se o comando executa uma verificação mais lenta, mas mais completa, ou uma verificação mais rápida, mas menos completa.

  • Se true, executa uma verificação mais completa com a seguinte exceção:

    • A validação completa do oplog para WiredTiger ignora a verificação mais completa.

  • Se false, omite algumas verificações para uma verificação mais rápida, mas menos completa.

O padrão é false.

Para o mecanismo de armazenamento WiredTiger, somente o processo de validação full força um checkpoint e libera todos os dados na memória para o disco antes de verificar os dados no disco.

booleano

Opcional. Um sinalizador que determina se o comando executa um reparo.

  • Se true, um reparo é realizado.

  • Se false, nenhum reparo é realizado.

O padrão é false.

Só é possível executar um reparo em um nó standalone.

O reparo corrige estes problemas:

  • Se forem encontradas entradas de índice ausentes, as chaves ausentes serão inseridas no índice.

  • Se forem encontradas entradas extras do índice, as chaves extras serão removidas do índice.

  • Se documentos de múltiplas chaves forem encontrados para um índice que não é um índice de múltiplas chaves , o índice será alterado para um índice de múltiplas chaves .

  • Se forem encontrados documentos multichave que não sejam especificados pelos caminhos multichave de um índice, os caminhos multichave do índice serão atualizados.

  • Se documentos corrompidos com dados BSON inválidos forem encontrados, os documentos serão removidos.

Para obter mais informações, consulte a opção --repair para mongod

Novidades na versão 5.0.

O método db.collection.validate() pode consumir muitos recursos e afetar o desempenho da sua instância do MongoDB, especialmente em conjuntos de dados maiores.

O método db.collection.validate() obtém um bloqueio exclusivo na coleção. Isso bloqueará todas as leituras e gravações na coleção até a operação ser concluída. Quando executada em um secundário, a operação pode bloquear todas as outras operações nesse secundário até terminar.

Aviso

A validação tem requisitos de bloqueio exclusivo que afetam o desempenho em primários e em secundários que estão atendendo leituras. Considere executar db.collection.validate() apenas em nós que não estejam atendendo leituras ou gravações.

Para minimizar o impacto no primário, a maioria dos membros com dados (não árbitros) votantes no cluster deve estar disponível e não deve ter atraso significativo de replicação.

Para minimizar o impacto da operação de validação nos aplicativos do cliente, execute o db.collection.validate() em um nó secundário que não esteja atendendo a solicitações de leitura. Você pode converter o nó primário atual em um nó secundário, executando o método rs.stepDown().

Para isolar completamente a operação do db.collection.validate() do tráfego do cliente, escolha uma das seguintes opções:

Os comandos $currentOp e currentOp incluem informações dataThroughputAverage e dataThroughputLastSecond para validar operações em andamento.

As mensagens de registro para validar operações incluem informações dataThroughputAverage e dataThroughputLastSecond.

  • Para validar uma coleção myCollection usando a configuração de validação padrão (especificamente, full: false):

    db.myCollection.validate()
    db.myCollection.validate({ })
    db.myCollection.validate( { full: false } )
  • Para executar uma validação completa da coleção myCollection, especifique full: true:

    db.myCollection.validate( { full: true } )
  • Para reparar a coleção myCollection, especifique repair: true:

    db.myCollection.validate( { repair: true } )

Para obter detalhes sobre a saída, consulte Validar saída.

Voltar

db.collection.updateOne