Reemplazo y Modificación de Documentos en MongoDB

Clase 10 de 17Curso 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.