$jsonSchema (Validação por JSON Schema)

Última atualização: 2026-10-09

$jsonSchema (Validação por JSON Schema)

$jsonSchema valida a estrutura do documento contra o padrão de rascunho JSON Schema, utilizável como predicado de consulta ou validador de coleção. `{ $jsonSchema: { required: ['name'], properties: { age: { bsonType: 'int' } } } }`. Ele suporta campos obrigatórios, restrições de tipo e padrões de propriedade, mas não pode usar índices normais e é custoso em coleções grandes — melhor para verificações de qualidade de dados.

CategoriaElemento e Avaliação
Versão do MongoDB3.6+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $jsonSchema: { required: [ <nome do campo> ], properties: { <propriedade>: { <restrição> } } } }

⚙️ Parâmetros

objeto de schemaUm documento JSON Schema com chaves como required, properties, bsonType.

Retorno:Cursor dos documentos correspondentes

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $jsonSchema: name obrigatório, age deve ser int
db.users.find({
  $jsonSchema: {
    required: ['name'],
    properties: {
      age: { bsonType: 'int' }
    }
  }
})

Saída:

// Retorna documentos com name presente e age do tipo int (age não declarado também passa)

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

Q$jsonSchema pode validar objetos aninhados?
ASim, aninhe properties dentro de properties para validar nível a nível.
QQual é a diferença entre $jsonSchema e $type?
A$type testa o tipo de um campo; $jsonSchema valida a estrutura de documento inteira com required, aninhamento e vários campos.
QPosso usar $jsonSchema ao criar uma coleção?
ASim, passe validator: { $jsonSchema: {...} } a db.createCollection como um validador no momento da escrita.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%