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.

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 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.

  • 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 campos de objetos de JSON schema, consulte JSON Schema 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 de 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 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 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