$jsonSchema
Nesta página
Definição
Sintaxe
A expressão do operador $jsonSchema
tem a seguinte sintaxe:
{ $jsonSchema: <JSON Schema object> }
Onde o objeto JSON schema é formatado de acordo com rascunho 4 do padrão JSON schema.
{ <keyword1>: <value1>, ... }
Por exemplo:
{ $jsonSchema: { required: [ "name", "major", "gpa", "address" ], properties: { name: { bsonType: "string", description: "must be a string and is required" }, address: { bsonType: "object", required: [ "zipcode" ], properties: { "street": { bsonType: "string" }, "zipcode": { bsonType: "string" } } } } } }
JSON schema
O MongoDB suporta rascunhos 4 do JSON schema, incluindo a especificação principal e a especificação de validação, com algumas diferenças. Par obter detalhes, consulte Extensões e Omissões.
Para mais informações sobre JSON schema, consulte o site oficial.
Palavras-chave disponíveis
Você pode especificar as seguintes palavras-chave em seu JSON schema.
Observação
O MongoDB implementa um subconjunto de palavras-chave disponíveis no JSON schema. Para obter uma lista completa das omissões, consulte Omissões.
Keyword | Tipo | Definição | Comportamento |
---|---|---|---|
additionalItems | arrays | booleano ou objeto | Se for um objeto, deve ser um JSON schema válido |
Propriedades adicionais | objetos | booleano ou objeto | Se Padrão é |
allOf | todos os tipos | array de objetos de JSON schema | O campo deve corresponder a todos os esquemas especificados |
anyOf | todos os tipos | array de objetos de JSON schema | O campo deve corresponder a pelo menos um dos esquemas especificados |
bsonType | todos os tipos | alias de string ou array de aliases de string | Aceita os mesmos aliases de string usados para o operador $type |
dependencies | objetos | objeto | Descreve dependências de campo ou esquema |
Descrição | N/A | string | Uma string que descreve o esquema e não tem efeito na validação. A partir do MongoDB 5.1, se o campo description for especificado, o MongoDB incluirá a description na saída de erro quando um documento falhar na validação. |
enum | todos os tipos | array de valores | Enumera todos os valores possíveis do campo |
exclusiveMaximum | números | booleano | Se true e campo for um número, maximum é um máximo exclusivo. Caso contrário, é um máximo inclusivo. |
exclusiveMinimum | números | booleano | Se true, minimum é um mínimo exclusivo. Caso contrário, é um mínimo inclusivo. |
items | arrays | objeto ou array | Deve ser um JSON schema válido ou uma array de JSON schemas válidos |
maximum | números | número | Indica o valor máximo do campo |
maxItems | arrays | inteiro | Indica o comprimento máximo da array |
maxLength | strings | inteiro | Indica o comprimento máximo do campo |
maxProperties | objetos | inteiro | Indica o número máximo de propriedades do campo |
minimum | números | número | Indica o valor mínimo do campo |
minItems | arrays | inteiro | Indica o comprimento mínimo da array |
minLength | strings | inteiro | Indica o comprimento mínimo do campo |
minProperties | objetos | inteiro | Indica o número mínimo de propriedades do campo |
multipleOf | números | número | O campo deve ser um múltiplo deste valor |
não | todos os tipos | um objeto de JSON schema | O campo não deve corresponder ao esquema |
oneOf | todos os tipos | array de objetos de JSON schema | O campo deve corresponder exatamente a um dos esquemas especificados |
padrão | strings | string que contém um regex | O campo deve corresponder à expressão regular |
patternProperties | objetos | objeto | Além dos requisitos de properties , cada nome de propriedade deste objeto deve ser uma expressão regular válida |
properties | objetos | objeto | Um JSON schema válido onde cada valor também é um objeto de JSON schema válido |
necessário | objetos | array de strings exclusivas | O conjunto de propriedades do objeto deve conter todos os elementos especificados na array |
title | N/A | string | Uma string de título descritiva sem efeito. |
type | todos os tipos | string ou array de strings exclusivas | Enumera os possíveis tipos de JSON do campo. Os tipos disponíveis são "object", "array", "number", "boolean", "string" e "null". A implementação do JSON schema do MongoDB não oferece suporte ao tipo "integer". Use a palavra-chave |
uniqueItems | arrays | booleano | Se true, cada item na array deverá ser exclusivo. Caso contrário, nenhuma restrição de exclusividade será imposta. |
Extensões
A implementação do JSON schema do MongoDB inclui a adição da palavra-chave bsonType
, que permite usar todos os tipos BSON no operador $jsonSchema
. bsonType
aceita os mesmos aliases de string usados para o operador $type
.
Omissões
O seguinte não é permitido na implementação do JSON schema do MongoDB:
Definições de hipertexto no rascunho 4 da especificação do JSON schema.
As palavras-chave:
$ref
$schema
default
definitions
format
id
O tipo
integer
. Você deve usar o tipo BSONint
oulong
com a palavra-chavebsonType
.Hipermídia e propriedades de vinculação do JSON schema, incluindo o uso de referências JSON e ponteiros JSON.
Palavras-chave desconhecidas.
Exemplos
Para exemplos que usam $jsonSchema
, consulte as seguintes páginas: