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

validar

Nesta página

  • Definição
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Exemplos
  • Validar saída
validate

O comando validate verifica a exatidão dos dados e índices de uma collection e gera os resultados.

Dica

Em mongosh, esse comando também pode ser executado por meio do método auxiliar validate() .

Os métodos auxiliares são práticos 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 praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.

Alterado na versão 5.0.

A partir da versão 5.0, o comando validate também pode encontrar inconsistências na coleção e corrigi-las, se possível.

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 quaisquer inconsistências forem detectadas pelo comando db.collection.validate(), um aviso será retornado e o sinalizador de reparo no índice será configurado para true.

db.collection.validate() também valida quaisquer documentos que violem as regras de validação do esquemada coleção.

Observação

O comando validate não oferece suporte a visualizações e gera um erro quando executado em uma visualização.

O método db.collection.validate() em mongosh fornece um encapsulador em torno de validate.

Alterado na versão 5.0.

O comando tem a seguinte sintaxe:

db.runCommand(
{
validate: <string>, // Collection name
full: <boolean>, // Optional
repair: <boolean>, // Optional, added in MongoDB 5.0
metadata: <boolean> // Optional, added in MongoDB 5.0.4
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
validate
string
O nome da coleção para validar.
booleano

Opcional. Um sinalizador que determina se o comando executa uma verificação mais lenta, porém mais completa, ou uma verificação mais rápida, porém 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. O validate.warnings inclui um aviso do comportamento.

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

O padrão é false.

A partir do MongoDB 3.6, 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.

Em versões anteriores, o processo de validação de dados para o mecanismo de armazenamento WT sempre força um checkpoint.

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.

Dica

Veja também:

--repair opção para mongod

Novidades na versão 5.0.

booleano

Opcional. Um sinalizador que permite que os usuários realizem uma validação rápida para detectar opções de índice inválidas sem digitalizar todos os documentos e índices.

  • Se true, uma verificação de validação de metadados é executada.

  • Se false, nenhuma verificação de validação de metadados será realizada.

O padrão é false.

A execução do comando validate com { metadata: true } não é compatível com outras opções validate.

A opção de validação do metadata:

  • Fornece uma maneira mais rápida de identificar índices inválidos examinando somente os metadados das coleções.

  • Oferece uma alternativa para eliminar e recriar vários índices inválidos quando usado com o comando collMod.

A opção de validação metadata verifica apenas os metadados da coleção para encontrar índices inválidos mais rapidamente.

Se for detectado um índice inválido, o comando validate solicitará que você use o comando collMod para remover os índices inválidos.

db.runCommand( { collMod: <collectionName> } )

Novidades na versão 5.0.4.

O comando validate pode ser lento, particularmente em conjuntos de dados maiores.

O comando validate obtém um bloqueio exclusivo W na coleção. Isso bloqueará todas as leituras e gravações na coleção até que a operação seja concluída. Quando executada em um secundário, a operação validate pode bloquear todas as outras operações nesse secundário até que ela seja concluída.

Aviso

Devido ao impacto da validação no desempenho, considere a execução de validate somente nos nós do conjunto de réplicas secundário. Você pode usar rs.stepDown() para instruir o nó primário atual a se tornar um secundário para evitar o impacto em um nó primário ativo.

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.

O comando validate não mais compatível com afterClusterTime. Então, validate não pode ser associada a sessões causalmente consistentes.

Iniciando no MongoDB 6.0, o comando validate retorna uma mensagem se um índice único tiver um formato de chave incompatível. A mensagem indica que um formato antigo está sendo usado.

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

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

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

    db.runCommand( { validate: "myCollection", repair: true } )
  • Para validar os metadados na coleção myCollection, especifique metadados: true:

    db.runCommand( { validate: "myCollection", metadata: true } )

Observação

O resultado pode variar dependendo da versão e configuração específica da sua instância MongoDB.

Especifique completo: true para obter resultados mais detalhados.

validate.nInvalidDocuments

O número de documentos inválidos na coleção. Documentos inválidos são aqueles que não podem ser lidos, o que significa que o documento BSON está corrompido e tem um erro ou uma incompatibilidade de tamanho.

validate.nNonCompliantDocuments

O número de documentos que não estão em conformidade com o esquema da coleção. Os documentos fora de conformidade não são considerados inválidos em nInvalidDocuments.

validate.nrecords

O número de documentos na coleção.

validate.nIndexes

O número de índices na coleção que foram validados.

validate.keysPerIndex

Um documento que contém o nome e a contagem de entrada do índice para cada índice na coleção.

"keysPerIndex" : {
"_id_" : <num>,
"<index2_name>" : <num>,
...
}

keysPerIndex identifica o índice somente por seu nome.

validate.indexDetails

Um documento que contém o status da validação do índice para cada índice.

"indexDetails" : {
"_id_" : {
"valid" : <boolean>
},
"<index2_name>" : {
"valid" : <boolean>
},
...
}
  • indexDetails identifica o índice específico (ou índices) que é inválido. Versões anteriores do MongoDB marcariam todos os índices como inválidos, se algum dos índices fosse inválido.

  • indexDetails identifica o índice somente por seu nome. Versões anteriores do MongoDB exibiram o namespace completo do índice; isto é, <db>.<collection>.$<index_name>.

validate.ns

O namespace completo da coleção. Os namespaces incluem o nome do banco de dados e o nome da coleção no formulário database.collection.

validate.valid

Um booleano que é true se validate determinar que todos os aspectos da coleção são válidos. Quando false, consulte o campo errors para mais informações.

validate.repaired

Um booleano que é true se validate reparou a coleção.

validate.warnings

Uma array que contém mensagens de aviso, se houver, relacionadas à própria operação de validação. As mensagens de aviso não indicam que a coleção é inválida. Por exemplo:

"warnings" : [
"Could not complete validation of table:collection-28-6471619540207520785. This is a transient issue as the collection was actively in use by other operations."
],
validate.errors

Se a coleção não for válida (isto é, valid é falso), este campo conterá uma mensagem descrevendo o erro de validação.

validate.extraIndexEntries

Uma array que contém informações para cada entrada de índice que aponta para um documento que não existe na coleção.

"extraIndexEntries" : [
{
"indexName" : <string>,
"recordId" : <NumberLong>, // for the non-existent document
"indexKey" : {
"<key1>" : <value>,
...
}
}
...
]

Observação

Para a array extraIndexEntries, a soma de todos os tamanhos de campo indexKey tem um limite de 1MB, em que os tamanhos incluem as chaves e os valores para indexKey. Se a soma exceder esse tamanho, o campo de aviso exibirá uma mensagem.

validate.missingIndexEntries

Uma array que contém informações para cada documento que está faltando a entrada de índice correspondente.

"missingIndexEntries" : [
{
"indexName" : <string>,
"recordId" : <NumberLong>,
"idKey" : <_id key value>, // The _id value of the document. Only present if an ``_id`` index exists.
"indexKey" : { // The missing index entry
"<key1>" : <value>,
...
}
}
...
]

Observação

Para a array missingIndexEntries, a soma do tamanho do campo idKey e de todos os seus tamanhos de campo indexKeytem um limite de 1 MB, em que os tamanhos de campo incluem as chaves e valores para idKey e indexKey. Se a soma exceder esse tamanho, o campo de aviso exibirá uma mensagem.

validate.corruptRecords

Uma array de RecordId valores para documentos ilegíveis, possivelmente porque os dados estão danificados. Esses documentos são relatados como corrompidos durante a validação. Um RecordId é uma chave interna do número inteiro de 64 bits que identifica exclusivamente um documento em uma coleção.

"corruptRecords" : [
NumberLong(1), // RecordId 1
NumberLong(2) // RecordId 2
]

Novidades na versão 5.0.

validate.ok

Um número inteiro com o valor 1 quando o comando for bem-sucedido. Se o comando falhar, o campo ok terá um valor de 0.

← principal