$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.
| Categoria | Elemento e Avaliação |
|---|---|
| Versão do MongoDB | 3.6+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $jsonSchema: { required: [ <nome do campo> ], properties: { <propriedade>: { <restrição> } } } }
⚙️ Parâmetros
| objeto de schema | Um 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
- Use bsonType para fixar tipos BSON (int, string, objectId, etc.)
- Não pode usar índices normais; evite uso frequente em coleções grandes
- A mesma sintaxe alimenta os validadores de coleção (a opção validator de db.createCollection)
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 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.