Menu Docs
Página inicial do Docs
/ / /
Driver Rust
/

Validação de esquema

Nesta página

  • Visão geral
  • Validação de JSON schema
  • Implementar validação de esquema
  • Exemplo
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como usar o driver Rust para implementar a validação de esquema para suas coleções MongoDB.

Para implementar a validação de esquema, você deve fornecer um JSON schema que consista em um conjunto de regras de validação. Se você implementar a validação de esquema, o servidor só permitirá que você execute operações de gravação que seguem as regras de validação. Use a validação de esquema para restringir tipos de dados e intervalos de valores de campos de documento em uma coleção especificada.

Você pode definir regras de validação de esquema ao criar uma collection usando métodos de driver ou pode adicioná-las a uma collection existente usando o comando collMod do MongoDB. Este guia descreve apenas como habilitar a validação do esquema ao criar uma coleção. Para saber mais sobre como ativar a validação de esquema em coleções existentes, consulte collMod no manual do servidor MongoDB.

Antes de criar uma coleção com regras de validação de esquema, você deve definir um JSON schema.

O JSON schema é um objeto JSON que contém pares de valores-chave que especificam as regras de validação para sua coleção. No nível superior, este objeto deve incluir um objeto $jsonSchema . O objeto $jsonSchema inclui os seguintes campos:

  • title: define uma descrição opcional para o esquema.

  • obrigatório: especifica uma lista de campos obrigatórios para cada documento da sua collection.

  • propriedades: define os requisitos de propriedades para campos individuais.

Para obter uma lista completa dos campos de objeto de JSON schema , consulte JSON schema no manual do servidor MongoDB.

Você pode implementar a validação de esquema passando seu esquema e opções relacionadas para os métodos do construtor de opções do CreateCollectionOptions .

Observação

Opções de configuração

Você pode definir CreateCollectionOptions campos encadeando métodos de construtor de opções diretamente à chamada de método create_collection() . Se você estiver utilizando uma versão anterior do driver, você deverá construir uma instância do CreateCollectionOptions encadeando métodos de construtor de opção ao método builder() .

Chame os seguintes métodos do CreateCollectionOptions para especificar as opções de validação para a nova coleção:

Método
Descrição
validator()

Especifica as regras de validação para uma collection passando um JSON schema.

Para obter mais informações, consulte a seção Validação de JSON schema nesta página.

validation_level()

Especifica quais operações de inserção e atualização estão sujeitas às regras de validação.

Valores possíveis: ValidationLevel::Off, ValidationLevel::Strict, ValidationLevel::Moderate.

validation_action()

Especifica se o driver lança um erro ou um aviso se você inserir documentos que não sigam as regras de validação.

Valores possíveis: ValidationAction::Error, ValidationAction::Warn.

Este exemplo cria uma collection chamada survey_answers com as seguintes especificações de validação:

  • O método validator() recebe um JSON schema especificando que o campo answer em cada documento deve ter um valor de "yes" ou "no".

  • O método validation_action() especifica se o driver gera um Error quando uma operação de gravação viola uma regra de validação.

  • O método validation_level() especifica que a validação é Moderate, portanto, as regras de validação se aplicam somente a inserções e atualizações em documentos válidos existentes.

let validator =
doc! {
"$jsonSchema": doc! {
"bsonType": "object",
"title": "Answer Value Validation",
"properties": doc! {
"answer": doc! {
"enum": vec! [ "yes", "no" ],
}
}
}
};
db.create_collection("survey_answers")
.validator(validator)
.validation_action(ValidationAction::Error)
.validation_level(ValidationLevel::Moderate)
.await?;

Os seguintes documentos seguem as regras de validação e podem ser inseridos com sucesso:

{
"_id": { ... },
"question": "Do you like to exercise?",
"answer": "yes"
},
{
"_id": { ... },
"question": "Do you like to play computer games?",
"answer": "no"
}

No entanto, se você tentar inserir o seguinte documento, o servidor gerará um erro porque o valor de answer não corresponde a nenhuma das opções válidas:

{
"_id": { ... },
"question": "Do you like to exercise?",
"answer": "depends on my mood"
}
Error: Error { kind: Write(WriteError(WriteError { code: 121, code_name:
None, message: "Document failed validation", details:
Some(Document({"failingDocumentId":
ObjectId("..."), "details":
Document({"operatorName": String("$jsonSchema"), "title": String("Answer
Value Validation"), ... })})) })), ... }

Dica

Ignorar validação de esquema

Para ignorar as regras de validação de uma coleção, defina o campo bypass_document_validation como true no parâmetro de opções do método de escrita. Isso ignora quaisquer regras de validação na coleção e quaisquer isenções delas definidas pelo validation_level.

Para ver um exemplo de como especificar essa configuração nas opções do método insert_one() , consulte a seção Modificar comportamento insert_one do guia Inserir documentos.

Para saber mais sobre as operações do MongoDB Server mencionadas nesta página, consulte a seguinte documentação no manual do servidor MongoDB:

Para saber mais sobre como definir níveis de validação e ações, consulte a seguinte documentação da API:

Para saber mais sobre quaisquer outros métodos ou tipos referenciados neste guia, consulte a seguinte documentação:

Voltar

reconhecimento de data center e collection