Overview
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.
Validación de esquema JSON
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.
Implementar la validación de esquemas
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 |
|---|---|
| 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. |
| Especifica qué operaciones de inserción y actualización están sujetas a las reglas de validación. Possible values: |
| Especifica si el driver lanza un error o una advertencia si insertas documentos que no siguen las reglas de validación. Possible values: |
Ejemplo
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 campoansweren cada documento debe tener un valor de"yes"o"no".El método
validation_action()especifica si el driver genera unErrorcuando una operación de guardado viola una regla de validación.El método
validation_level()especifica que la validación esModerate, 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.
Información Adicional
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:
Documentación de la API
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:
nivel_de_validación para el método asistente
validation_level()ValidationLevel para valores posibles de
validation_levelvalidation_action para el
validation_action()método auxiliarValidaciónAction para posibles valores de
validation_action
Para obtener más información sobre cualquier otro método o tipo mencionado en esta guía, consulte la siguiente documentación: