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

$validate

Nesta página

  • Definição
  • Sintaxe
  • Comportamento
  • Exemplo de validador

O estágio $validate verifica a conformidade dos documentos de streaming com um esquema de faixas, valores ou tipos de dados esperados.

$validate

Um estágio de pipeline do $validate tem a seguinte forma de protótipo:

{
"$validate": {
"validator": { <filter> },
"validationAction" : "discard" | "dlq"
}
}

O estágio $validate recebe um documento com os seguintes campos:

Campo
Tipo
necessidade
Descrição
validator
documento
Obrigatório

Documento de expressões usado para validar mensagens recebidas em relação a um esquema definido pelo usuário. Você pode usar todos, exceto os seguintes operadores de query, para definir expressões de validação:

  • $near

  • $nearSphere

  • $text

  • $where

validationAction
string
Opcional

Especifica a ação a ser tomada quando uma mensagem viola o esquema definido pelo usuário. Você pode especificar um dos seguintes valores:

  • discard: descarta a mensagem. Se você não especificar um valor para validationAction, este será o comportamento padrão.

  • dlq: Registra a violação na collection definida na configuração do Processador de Stream e executa o descarte da melhor maneira possível sem garantias transacionais.

Você pode usar $validate em qualquer ponto de um pipeline após o estágio $source e antes do estágio $emit ou $merge .

Se você especificar as opções discard ou dlq para o campo validationAction , o Atlas Stream Processing registrará mensagens que falharão na validação no seguinte formato:

{
"t": <datetime>,
"s": "<severity-level>",
"c": "streams-<job-name>",
"ctx": "<processed-pipeline>",
"msg": "<message-body>",
"attrs": {
<result-of-logAttributes-evaluation>
},
"tags": <array-of-strings>,
"truncated": {
<truncation-description>
},
"size": <size-of-entry>
}

A tabela a seguir descreve os campos de entrada de registro:

Campo
Tipo
Descrição
attrs
documento
documento que contém os resultados da avaliação do campo logAttributes na definição $validate . O resultado é uma lista de campos.
c
string
Nome da Atlas Stream Processing tarefa específica em que ocorreu a falha.
ctx
string
Nome do pipeline de dados de streaming que está sendo processado.
msg
string
Corpo da mensagem que falhou na validação.

Atlas Stream Processing suporta apenas JSON schema Rascunho 4 ou anterior.

O documento a seguir mostra um exemplo de expressão de validador usando $and para executar uma operação lógica E:

{
$validate: {
validator: {
$and: [{
$expr: {
$ne: [
"$Racer_Name",
"Pace Car"
]
}
},
{
$jsonSchema: {
required: [ "Racer_Num", "Racer_Name", "lap", "Corner_Num", "timestamp" ],
properties: {
Racer_Num: {
bsonType: "int",
description: "'Racer_Num' is the integer number of the race car and is required"
},
Racer_Name: {
bsonType: "string",
description: "'Racer_Name' must be a string and is required"
},
lap: {
bsonType: "int",
minimum: 1,
description: "'lap' must be a int and is required"
},
Corner_Num: {
bsonType: "int",
minimum: 1,
maximum: 4,
description: "'Corner_Num' must be a int between 1 and 4 and is required"
},
timestamp: {
bsonType: "string",
pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}$",
description: "'timestamp' must be a string matching iso date pattern and is required"
}
}
}
}]
}, validationAction : "dlq"
}
}
← $source
$lookup →