Docs Menu
Docs Home
/ /

Validación de esquema

En esta guía, puede aprender a utilizar el controlador Rust para implementar la validación de esquema para sus colecciones de MongoDB.

Para implementar la validación de esquemas, debe proporcionar un esquema JSON que conste de un conjunto de reglas de validación. Si implementa la validación de esquemas, el servidor solo le permitirá ejecutar operaciones de escritura que cumplan las reglas de validación. Utilice la validación de esquemas para restringir los tipos de datos y los rangos de valores de los campos de documento en una colección específica.

Puede definir reglas de validación de esquema al crear una colección mediante métodos de controlador, o puede agregarlas a una colección existente mediante el uso de collMod Comando de MongoDB. Esta guía solo describe cómo habilitar la validación de esquema al crear una colección. Para obtener más información sobre cómo habilitar la validación de esquema en colecciones existentes, consulte collMod en el manual del servidor.

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

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:

  • título: establece una descripción opcional para el esquema.

  • obligatorio: especifica una lista de campos obligatorios para cada documento de su colección.

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

Para obtener una lista completa de los campos de objetos de esquema JSON, consulte Esquema JSON en el manual del servidor.

Puedes implementar la validación de esquemas pasando tu esquema y las opciones relacionadas a los métodos para construir opciones de CreateCollectionOptions.

Nota

Opciones de configuración

Puede configurar los campos CreateCollectionOptions encadenando los métodos del generador de opciones directamente a la llamada al método create_collection(). Si utiliza una versión anterior del controlador, debe construir una instancia CreateCollectionOptions encadenando los métodos del generador de opciones al método builder().

Llame a los siguientes métodos CreateCollectionOptions 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 obtener más información, consulte la SecciónValidació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 controlador genera un error o una advertencia si inserta 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 esquema JSON 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 se aplican solo 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" ],
}
}
}
};
db.create_collection("survey_answers")
.validator(validator)
.validation_action(ValidationAction::Error)
.validation_level(ValidationLevel::Moderate)
.await?;

Los siguientes documentos siguen las reglas de validación y se pueden insertar correctamente:

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

Sin embargo, si intenta 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 omitir las reglas de validación de una colección, establezca el campo bypass_document_validation en true en el parámetro de opciones del método de escritura. Esto ignora las reglas de validación de la colección y cualquier excepción a las mismas definidas por validation_level.

Para ver un ejemplo de cómo especificar esta configuración en las opciones del insert_one() método, consulte la sección Modificar el comportamiento de insert_one de 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 y acciones de validación, consulte la siguiente documentación de API:

Para obtener más información sobre otros métodos o tipos a los que se hace referencia en esta guía, consulte la siguiente documentación:

Volver

Bases de datos y colecciones

En esta página