Manejar Errores de Consulta y Validación
Los errores también pueden ocurrir cuando consulta datos o cuando los datos insertados no se ajustan a las reglas predefinidas. En este paso, explorará un error de sintaxis de consulta y un error de validación de datos.
Primero, veamos qué sucede cuando utiliza un operador de consulta que no existe. Esto es un error tipográfico común.
db.users.find({ name: { $invalidOperator: "John" } });
MongoDB devuelve inmediatamente un error porque no reconoce $invalidOperator.
MongoServerError[BadValue]: unknown operator: $invalidOperator
A continuación, exploremos una característica más potente: la validación de esquemas. Puede definir reglas que los documentos deben seguir para ser insertados o actualizados en una colección. Creemos una nueva colección products con un validador que requiere un name (cadena) y un price (número).
db.createCollection("products", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["name", "price"],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
},
price: {
bsonType: "number",
description: "must be a number and is required"
}
}
}
}
});
Ahora, intente insertar un documento que viola este esquema proporcionando el price como una cadena en lugar de un número.
db.products.insertOne({ name: "Laptop", price: "1200" });
La operación falla con un MongoBulkWriteError. El mensaje Document failed validation indica claramente la razón, evitando que datos incorrectos ingresen a su base de datos.
MongoServerError: Document failed validation
...
Finalmente, inserte un documento válido que cumpla con el esquema.
db.products.insertOne({ name: "Laptop", price: 1200 });
Esta operación tiene éxito porque el documento es válido.
{
"acknowledged": true,
"insertedId": ObjectId("...")
}
La validación de esquemas es una herramienta potente para hacer cumplir la consistencia de los datos directamente dentro de la base de datos.