Validação de esquema
Nesta página
Visão geral
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.
Validação de JSON schema
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.
Implementar validação de esquema
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: |
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: |
Exemplo
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 campoanswer
em cada documento deve ter um valor de"yes"
ou"no"
.O método
validation_action()
especifica se o driver gera umError
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.
Informações adicionais
Para saber mais sobre as operações do MongoDB Server mencionadas nesta página, consulte a seguinte documentação no manual do servidor MongoDB:
Documentação da API
Para saber mais sobre como definir níveis de validação e ações, consulte a seguinte documentação da API:
validation_level para o
validation_level()
método assistenteNível de validação para possíveis
validation_level
valoresvalidation_action para o
validation_action()
método auxiliarAção de
validation_action
validação para possíveis valores
Para saber mais sobre quaisquer outros métodos ou tipos referenciados neste guia, consulte a seguinte documentação: