Reemplazo y Modificación de Documentos en MongoDB
Clase 10 de 17 • Curso de Base de Datos NoSQL
Resumen
La operación de reemplazo en MongoDB permite sustituir el contenido completo de un documento. Esto es útil cuando se necesita modificar todo el documento en lugar de solo algunos campos. Aunque existen varias funciones para actualizar documentos, cada una tiene su propósito específico y utiliza los recursos del clúster de manera distinta.
¿Cómo se realiza la operación de reemplazo en MongoDB?
- Utiliza
replaceOne
para reemplazar un documento completo. - El primer argumento es el filtro, usualmente el
ObjectId
. - El segundo argumento es el nuevo documento que reemplazará al existente.
Ejemplo:
db.customers.replaceOne(
{ _id: ObjectId("identificador_del_documento") },
{ username: "elitry" }
);
Este ejemplo elimina todos los campos excepto username
y lo reemplaza con el valor especificado.
¿Qué hacer si no se encuentra un documento?
- Utiliza la opción
upsert: true
. - Si el filtro no encuentra un documento, se crea uno nuevo con los valores proporcionados.
Ejemplo:
db.customers.replaceOne(
{ username: "xyz" },
{ username: "xyz", name: "Andrés", email: "test@gmail.com" },
{ upsert: true }
);
Este comando crea un nuevo documento si no encuentra uno existente con el username
especificado.
¿Cómo usar Find and Modify para reemplazar documentos?
findAndModify
no solo actualiza el documento, sino que también devuelve el documento antes o después de la modificación.
Ejemplo:
db.customers.findAndModify({
query: { username: "lintco1" },
update: { username: "lintc", name: "Catherine Davis" },
new: true
});
Este comando reemplaza el documento y puede configurarse para mostrar el documento modificado.
¿Cuáles son las diferencias clave entre Update y Replace?
updateOne
se usa para modificar ciertos campos del documento.updateMany
se usa para modificar múltiples documentos que cumplen con un filtro.replaceOne
reemplaza el documento completo.findAndModify
realiza dos operaciones: actualización y retorno del documento modificado.
¿Qué consideraciones tener al escalar?
- Las operaciones atómicas como
updateOne
son preferibles para minimizar el uso de CPU y disco. findAndModify
puede ser menos eficiente debido a las operaciones adicionales que realiza.