Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O $jsonSchema operador é usado para validar documentos em relação a uma especificação de esquema JSON. Ele garante que os documentos estejam em conformidade com uma estrutura predefinida, tipos de dados e regras de validação.
Sintaxe
A sintaxe para o operador é a $isArray seguinte:
db.createCollection("collectionName", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["field1", "field2"],
properties: {
field1: {
bsonType: "string",
},
field2: {
bsonType: "int",
minimum: 0,
description: "Description of field2 requirements"
}
}
}
},
validationLevel: "strict", // Optional: "strict" or "moderate"
validationAction: "error" // Optional: "error" or "warn"
})
Parâmetros
| Parâmetro | Description |
|---|---|
bsonType |
Especifica os tipos binários JSON (BSON) que o campo deve corresponder. Aceita aliases de cadeia de caracteres usados pelo operador $type. |
properties |
Objeto definindo regras de validação para campos específicos. |
minimum/maximum |
Restrições numéricas para campos numéricos. |
minLength/maxLength |
Restrições de comprimento de cadeia de caracteres. |
minItems/maxItems |
Restrições de comprimento da matriz. |
pattern |
Padrão de expressão regular para validação de cadeia de caracteres. |
items |
Validação de esquema para elementos de matriz. |
uniqueItems |
Booleano indicando se os itens de matriz devem ser exclusivos. |
Palavras-chave suportadas
O Azure DocumentDB suporta as seguintes palavras-chave do Esquema JSON:
| Keyword | Tipo | Description | Usage |
|---|---|---|---|
additionalItems |
arrays | Esquema para itens de matriz extra | Validação estendida de array |
bsonType |
todos os tipos | Extensão MongoDB - aceita aliases do tipo BSON |
"string", "int", "double", "object", "array", "bool", "date" |
exclusiveMinimum |
Números | Limite mínimo exclusivo | Validação numérica avançada |
exclusiveMaximum |
Números | Limite máximo exclusivo | Validação numérica avançada |
items |
arrays | Esquema para elementos de matriz | Validação de elementos de matriz |
minimum |
Números | Restrição de valor mínimo | Validação numérica |
maximum |
Números | Restrição de valor máximo | Validação numérica |
minItems |
arrays | Comprimento mínimo do array | Validação do tamanho do array |
maxItems |
arrays | Comprimento máximo do array | Validação do tamanho do array |
multipleOf |
Números | O valor deve ser múltiplo do número especificado | Restrições matemáticas |
minLength |
cordas | Comprimento mínimo da cadeia de caracteres | Validação de cadeia de caracteres |
maxLength |
cordas | Comprimento máximo da cadeia de caracteres | Validação de cadeia de caracteres |
pattern |
cordas | Correspondência de padrão de expressão regular | Validação do formato de cadeia de caracteres |
properties |
objetos | Definir regras de validação para campos de objeto | Definição de esquema para objetos aninhados |
required |
objetos | Matriz de nomes de campos obrigatórios | Impor campos obrigatórios |
type |
todos os tipos | Tipos de esquema JSON padrão |
"object", "array", "number", "boolean", "string", "null" |
uniqueItems |
arrays | Impor elementos de matriz exclusivos | Integridade dos dados |
Palavras-chave não suportadas
Estas palavras-chave do esquema JSON ainda não são suportadas no Azure DocumentDB:
| Keyword | Tipo | Motivo do não suporte | Solução |
|---|---|---|---|
additionalProperties |
objetos | Não implementado | Usar definições explícitas properties |
allOf |
todos os tipos | Operador lógico não suportado | Usar validação aninhada |
anyOf |
todos os tipos | Operador lógico não suportado | Usar consultas separadas |
dependencies |
objetos | Validação de dependência complexa não suportada | Manipular na lógica do aplicativo |
description |
N/A | Pode não aparecer em mensagens de erro | Apenas informativo |
enum |
todos os tipos | Validação de enumeração não suportada | Use $in o operador em vez disso |
maxProperties |
objetos | Validação de contagem de propriedades não suportada | Manipular na lógica do aplicativo |
minProperties |
objetos | Validação de contagem de propriedades não suportada | Manipular na lógica do aplicativo |
not |
todos os tipos | Operador de negação não suportado | Usar regras de validação positiva |
oneOf |
todos os tipos | Operador lógico não suportado | Usar validação no nível do aplicativo |
patternProperties |
objetos | Não há suporte para validação de propriedade baseada em padrão | Usar nomes de propriedade explícitos |
title |
N/A | Campo de metadados não processado | Utilize description em vez disso |
Examples
Vamos explorar exemplos práticos usando o stores conjunto de dados:
{
"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
"name": "First Up Consultants | Bed and Bath Center - South Amir",
"location": {
"lat": 60.7954,
"lon": -142.0012
},
"staff": {
"totalStaff": {
"fullTime": 18,
"partTime": 17
}
},
"sales": {
"totalSales": 37701,
"salesByCategory": [
{
"categoryName": "Mattress Toppers",
"totalSales": 37701
}
]
}
}
Exemplo 1: Validação da estrutura básica
Esta consulta recupera todos os armazenamentos com nomes entre 5 e 100 caracteres e que as coordenadas geográficas estão dentro de intervalos válidos: latitude entre -90 e 90 e longitude entre -180 e 180.
db.stores.find({
$jsonSchema: {
bsonType: "object",
properties: {
_id: {
bsonType: "string"
},
name: {
bsonType: "string",
minLength: 5,
maxLength: 100
},
location: {
bsonType: "object",
properties: {
lat: {
bsonType: "double",
minimum: -90,
maximum: 90
},
lon: {
bsonType: "double",
minimum: -180,
maximum: 180
}
}
}
}
}
}).limit(1)
Exemplo 2: Validação de vendas com itens de matriz
Esta consulta recupera todos os documentos da loja em que o campo sales é um objeto válido que contém um valor total de vendas não negativo e uma matriz salesByCategory com pelo menos um item.
db.stores.find({
$jsonSchema: {
bsonType: "object",
properties: {
sales: {
bsonType: "object",
properties: {
totalSales: {
bsonType: "int",
minimum: 0
},
salesByCategory: {
bsonType: "array",
minItems: 1,
items: {
bsonType: "object",
properties: {
categoryName: {
bsonType: "string",
minLength: 1
},
totalSales: {
bsonType: "int",
minimum: 0
}
}
}
}
}
}
}
}
}).limit(1)
Esta consulta deve retornar esta saída:
[
{
_id: 'new-store-001',
name: 'Adatum Corporation - Downtown Branch',
sales: { totalSales: 5000 },
createdDate: ISODate('2025-06-11T11:11:32.262Z'),
status: 'new',
staff: { totalStaff: { fullTime: 0, partTime: 0 } },
version: 1,
storeOpeningDate: ISODate('2025-06-11T11:11:32.262Z'),
storeFeatures: 213
}
]
Exemplo 3: Combinando com operadores de consulta
Esta consulta recupera todos os documentos da loja em que o campo staff é um objeto válido que inclui um subobjeto totalStaff com pelo menos um membro da equipe em tempo integral (fullTime ≥ 1) e sales.totalSales maior que 10.000.
db.stores.find({
$and: [
{
$jsonSchema: {
properties: {
staff: {
bsonType: "object",
properties: {
totalStaff: {
bsonType: "object",
properties: {
fullTime: {
bsonType: "int",
minimum: 1
}
}
}
}
}
}
}
},
// Additional query constraints
{
"sales.totalSales": { $gt: 10000 }
}
]
}).limit(1)
Essa consulta retorna o seguinte resultado:
[
{
_id: 'future-electronics-001',
address: { city: 'New Tech City' },
name: 'Boulder Innovations - Future Electronics Hub',
sales: { totalSales: 25000 },
establishedDate: ISODate('2025-06-11T11:14:23.147Z'),
categories: [ 'electronics', 'gadgets', 'smart-home' ],
promotionEvents: [],
ratings: { average: 0, count: 0, reviews: [] },
inventory: {
lastUpdated: ISODate('2025-06-11T11:14:23.147Z'),
totalItems: 0,
lowStockAlerts: []
},
storeOpeningDate: ISODate('2025-06-11T11:11:32.262Z'),
storeFeatures: 120
}
]
Conteúdo relacionado
- Revise as opções para migrar do MongoDB para o Azure DocumentDB.
- Leia mais sobre a compatibilidade de recursos com o MongoDB.