Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Validación de esquema

En esta guía, puede aprender cómo usar el driver de Rust para implementar la validación de esquemas para sus colecciones de MongoDB.

Para implementar la validación de esquema, usted debe proporcionar un JSON schema que consista en un conjunto de reglas de validación. Si implementa la validación de esquema, el servidor solo le permite ejecutar operaciones de escritura que sigan las reglas de validación. Utilice la validación de esquema para restringir los tipos de datos y los rangos de valores de los campos de documentos en una colección especificada.

Puedes definir reglas de validación de esquemas al crear una colección usando métodos del controlador, o puedes añadirlas a una colección existente usando el collMod MongoDB comando. Esta guía solo describe cómo habilitar la validación de esquemas al crear una colección. Para aprender más sobre cómo habilitar la validación de esquemas en colecciones existentes, consulta collMod en el manual del servidor server.

Antes de crear una colección con reglas de validación de esquemas, debe definir un JSON schema.

El esquema JSON es un objeto JSON que contiene pares clave-valor que especifican las reglas de validación para tu colección. A nivel superior, este objeto debe incluir un objeto $jsonSchema. El objeto $jsonSchema incluye los siguientes campos:

  • title: establece una descripción opcional para el esquema.

  • requerido: especifica una lista de campos obligatorios para cada documento en tu colección.

  • propiedades: establece los requisitos de propiedad para campos individuales.

Para obtener una lista completa de campos de objetos de JSON schema, consulte JSON Schema en el manual del servidor.

Puede implementar la validación de esquemas pasando su esquema y las opciones relacionadas en una instancia de CreateCollectionOptions al método create_collection(). Puede crear una instancia de CreateCollectionOptions utilizando el método CreateCollectionOptions::builder().

Nota

Opciones de instanciación

El driver de Rust implementa el patrón de diseño Builder para la creación de muchos tipos diferentes, incluido CreateCollectionOptions. Puedes usar el método builder() de cada tipo para construir una instancia de opciones encadenando funciones constructoras de opciones una tras otra.

Llama a las siguientes funciones CreateCollectionOptions::builder() para especificar las opciones de validación para la nueva colección:

Método
Descripción

validator()

Especifica reglas de validación para una colección pasando un esquema JSON.

Para más información, consulta la Validación de esquema JSON en esta página.

validation_level()

Especifica qué operaciones de inserción y actualización están sujetas a las reglas de validación.

Possible values: ValidationLevel::Off, ValidationLevel::Strict, ValidationLevel::Moderate.

validation_action()

Especifica si el driver lanza un error o una advertencia si insertas documentos que no siguen las reglas de validación.

Possible values: ValidationAction::Error, ValidationAction::Warn.

Este ejemplo crea una colección llamada survey_answers con las siguientes especificaciones de validación:

  • El método validator() recibe un JSON schema que especifica que el campo answer en cada documento debe tener un valor de "yes" o "no".

  • El método validation_action() especifica si el driver genera un Error cuando una operación de guardado viola una regla de validación.

  • El método validation_level() especifica que la validación es Moderate, por lo que las reglas de validación solo se aplican a inserciones y actualizaciones en documentos válidos existentes.

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

Los siguientes documentos cumplen con las reglas de validación y pueden insertarse correctamente:

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

Sin embargo, si intentas insertar el siguiente documento, el servidor genera un error porque el valor de answer no coincide con ninguna de las opciones 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"), ... })})) })), ... }

Tip

Saltar la validación del esquema

Para evitar las reglas de validación de una colección, establece el campo bypass_document_validation en true en el parámetro options del método guardar. Esto ignora cualquier regla de validación de la colección y cualquier excepción definida por el validation_level.

Para ver un ejemplo de cómo especificar esta configuración en las opciones para el método insert_one(), consulta la sección Modificación en el comportamiento de insert_one en la guía Insertar documentos.

Para obtener más información sobre las operaciones MongoDB Server mencionadas en esta página, consulta la siguiente documentación en el manual de servidor:

Para obtener más información sobre cómo configurar los niveles de validación y las acciones, consulte la siguiente documentación de la API:

Para obtener más información sobre cualquier otro método o tipo mencionado en esta guía, consulte la siguiente documentación:

Volver

Bases de datos y colecciones

En esta página