La validación de esquema en MongoDB te permite aplicar reglas de validación a los documentos que se insertan en una colección. Puedes definir reglas para garantizar que los documentos cumplan con ciertas condiciones antes de ser almacenados en la base de datos. Esto es útil para mantener la integridad de los datos y prevenir la inserción de datos incorrectos o incompletos en la base de datos. A continuación, te mostraré cómo configurar la validación de esquema en MongoDB.
Crear una colección con reglas de validación
Primero, crea una colección con reglas de validación. Puedes definir estas reglas al crear la colección o agregarlas posteriormente.
Para crear una colección con reglas de validación, utiliza el método createCollection con las opciones de validación en MongoDB. Puedes hacerlo utilizando la línea de comandos de MongoDB o en un entorno de programación como Node.js.
En la línea de comandos de MongoDB
db.createCollection("mi_coleccion", { validator: { $jsonSchema: { bsonType: "object", required: ["campo1", "campo2"], properties: { "campo1": { bsonType: "string", description: "Debe ser una cadena de texto." }, "campo2": { bsonType: "int", minimum: 18, description: "Debe ser un número entero mayor o igual a 18." } } } } })
Este comando crea una colección llamada "mi_coleccion" con reglas de validación que requieren que los documentos sean objetos con los campos "campo1" y "campo2". Además, impone restricciones en los tipos de datos y valores permitidos para estos campos.
const { MongoClient } = require("mongodb"); const uri = "mongodb://localhost:27017/mi_base_de_datos"; const client = new MongoClient(uri); async function crearColeccionConValidacion() { try { await client.connect(); const database = client.db("mi_base_de_datos"); await database.createCollection("mi_coleccion", { validator: { $jsonSchema: { bsonType: "object", required: ["campo1", "campo2"], properties: { campo1: { bsonType: "string", description: "Debe ser una cadena de texto." }, campo2: { bsonType: "int", minimum: 18, description: "Debe ser un número entero mayor o igual a 18." } } } } }); console.log("Colección con validación creada con éxito."); } catch (error) { console.error("Error al crear la colección:", error); } finally { client.close(); } } crearColeccionConValidacion();
Insertar documentos que cumplan con las reglas de validación
Una vez que tienes una colección con reglas de validación, puedes insertar documentos que cumplan con esas reglas. MongoDB automáticamente validará los documentos antes de insertarlos. Si un documento no cumple con las reglas de validación, se rechazará y no se insertará en la colección.
Ejemplo de inserción válida:
// Objeto que contiene el documento válido const documentoValido = { campo1: "Ejemplo de texto", campo2: 20 }; // Insertar el documento válido en la colección const resultado = await collection.insertOne(documentoValido);
Intentar insertar un documento que no cumpla con las reglas de validación
Si intentas insertar un documento que no cumple con las reglas de validación, MongoDB generará un error y no permitirá la inserción del documento.
Ejemplo de inserción no válida:
// Definir un documento no válido const documentoNoValido = { campo1: 123, // No es una cadena de texto campo2: 15 // No cumple con la restricción mínima de 18 }; // Intentar insertar el documento no válido en la colección try { const resultado = await collection.insertOne(documentoNoValido); } catch (error) { console.error("Error de validación:", error); }
La validación de esquema en MongoDB es una característica poderosa para garantizar la integridad de los datos en tu base de datos. Puedes personalizar las reglas de validación según las necesidades específicas de tu aplicación. Asegúrate de adaptar las reglas de validación, los nombres de las colecciones y los campos a tu caso de uso particular.