Actualización y Reemplazo de Documentos en MongoDB

Clase 11 de 17Curso de Base de Datos NoSQL

Resumen

Modificar o actualizar documentos en MongoDB es esencial para manejar datos dinámicos. Aunque existen varios métodos para realizar estas acciones, los más comunes son update y replace. Cada uno se utiliza en diferentes escenarios y es crucial entender sus diferencias y aplicaciones.

¿Cómo se utiliza update en MongoDB?

¿Qué es update?

El método update permite modificar ciertos valores de un documento que cumplen con un filtro específico. Existen variantes como updateOne y updateMany.

¿Cómo usar updateOne?

Para actualizar un solo documento en MongoDB, se utiliza updateOne. Este método requiere un filtro para identificar el documento y el operador $set para especificar los cambios. Por ejemplo, para cambiar el nombre de un cliente:

db.customers.updateOne(
  { _id: ObjectId("5f3e5a3a29f1e8b7c2c69d62") },
  { $set: { name: "Elizabeth" } }
);

Este comando busca el documento con el _id especificado y actualiza el campo name.

¿Cómo usar updateMany?

Para actualizar múltiples documentos que cumplen con un criterio, se usa updateMany. Este método también requiere un filtro y los cambios a realizar:

db.customers.updateMany(
  { birthYear: { $gte: 1990 } },
  { $set: { membership: "Platinum" } }
);

En este ejemplo, todos los documentos donde birthYear es mayor o igual a 1990 se actualizarán para incluir el campo membership con el valor Platinum.

¿Qué es replace en MongoDB?

¿Cómo funciona replaceOne?

El método replaceOne reemplaza un documento completo excepto su identificador. Esto es útil cuando se necesita reestructurar un documento:

db.customers.replaceOne(
  { _id: ObjectId("5f3e5a3a29f1e8b7c2c69d62") },
  { name: "John Doe", age: 30, city: "New York" }
);

Este comando reemplaza el documento identificado por _id con uno nuevo que tiene los campos name, age y city.

¿Qué otras alternativas existen a update y replace?

Además de update y replace, MongoDB ofrece otros métodos para la manipulación de datos, como bulkWrite, que permite realizar múltiples operaciones en una sola llamada, y findAndModify, que devuelve y modifica documentos en un solo paso.

Ejercicio Práctico

Para seguir practicando, intenta el siguiente reto: en la base de datos de Airbnb, actualiza todos los apartamentos con menos de tres habitaciones restando 10 al precio. Esto te ayudará a aplicar los conceptos aprendidos.

db.airbnb.updateMany(
  { bedrooms: { $lt: 3 } },
  { $inc: { price: -10 } }
);