db.collection.validate()
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:
Descrição
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 comotrue
.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 comandovalidate
.
Compatibilidade
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
Sintaxe
O método db.collection.validate()
tem a seguinte sintaxe:
db.collection.validate( { full: <boolean>, // Optional repair: <boolean> // Optional, added in MongoDB 5.0 } )
Parâmetros
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.
O padrão é Para o mecanismo de armazenamento WiredTiger, somente o processo de validação | |
booleano | Opcional. Um sinalizador que determina se o comando executa um reparo.
O padrão é Só é possível executar um reparo em um nó standalone. O reparo corrige estes problemas:
Para obter mais informações, consulte a opção Novidades na versão 5.0. |
Comportamento
Desempenho
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:
Isole um membro do conjunto de réplicas seguindo o procedimento de manutenção de rolagem para removê-lo temporariamente do cluster.
Converta um nó secundário em um membro oculto do conjunto de réplicas e realize a validação no nó oculto.
Métricas de taxa de transferência de dados
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
.
Exemplos
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.