En este módulo, aprenderemos cómo actualizar documentos en MongoDB. Las operaciones de actualización son fundamentales para mantener la integridad y la relevancia de los datos en una base de datos. MongoDB proporciona varias formas de actualizar documentos, desde actualizaciones simples hasta operaciones más complejas que pueden modificar múltiples documentos a la vez.

Contenidos

Métodos de Actualización

MongoDB ofrece varios métodos para actualizar documentos:

  • updateOne(): Actualiza un solo documento que cumple con el criterio de búsqueda.
  • updateMany(): Actualiza todos los documentos que cumplen con el criterio de búsqueda.
  • replaceOne(): Reemplaza un solo documento que cumple con el criterio de búsqueda.

Ejemplo de updateOne()

db.collection.updateOne(
   { _id: 1 }, // Criterio de búsqueda
   { $set: { name: "Nuevo Nombre" } } // Operación de actualización
);

Ejemplo de updateMany()

db.collection.updateMany(
   { status: "pendiente" }, // Criterio de búsqueda
   { $set: { status: "completado" } } // Operación de actualización
);

Ejemplo de replaceOne()

db.collection.replaceOne(
   { _id: 1 }, // Criterio de búsqueda
   { name: "Nombre Reemplazado", status: "nuevo" } // Nuevo documento
);

Operadores de Actualización

MongoDB proporciona una variedad de operadores de actualización que permiten modificar documentos de diferentes maneras:

  • $set: Establece el valor de un campo.
  • $unset: Elimina un campo.
  • $inc: Incrementa el valor de un campo numérico.
  • $push: Añade un valor a un array.
  • $pull: Elimina un valor de un array.

Ejemplo de $set

db.collection.updateOne(
   { _id: 1 },
   { $set: { age: 30 } }
);

Ejemplo de $unset

db.collection.updateOne(
   { _id: 1 },
   { $unset: { age: "" } }
);

Ejemplo de $inc

db.collection.updateOne(
   { _id: 1 },
   { $inc: { age: 1 } }
);

Ejemplo de $push

db.collection.updateOne(
   { _id: 1 },
   { $push: { hobbies: "leer" } }
);

Ejemplo de $pull

db.collection.updateOne(
   { _id: 1 },
   { $pull: { hobbies: "leer" } }
);

Actualización de Documentos Únicos

Para actualizar un solo documento, utilizamos el método updateOne(). Este método actualiza el primer documento que cumple con el criterio de búsqueda.

Ejemplo

db.users.updateOne(
   { username: "johndoe" },
   { $set: { email: "[email protected]" } }
);

En este ejemplo, se actualiza el campo email del primer documento que tiene el username igual a "johndoe".

Actualización de Múltiples Documentos

Para actualizar múltiples documentos, utilizamos el método updateMany(). Este método actualiza todos los documentos que cumplen con el criterio de búsqueda.

Ejemplo

db.orders.updateMany(
   { status: "pendiente" },
   { $set: { status: "procesado" } }
);

En este ejemplo, se actualiza el campo status de todos los documentos que tienen el status igual a "pendiente".

Actualización Condicional

Podemos realizar actualizaciones condicionales utilizando operadores de comparación como $gt, $lt, $eq, etc.

Ejemplo

db.products.updateMany(
   { stock: { $lt: 10 } },
   { $set: { status: "bajo stock" } }
);

En este ejemplo, se actualiza el campo status de todos los productos cuyo stock es menor que 10.

Ejercicios Prácticos

Ejercicio 1

Actualiza el campo age a 25 para el usuario con username igual a "janedoe".

// Solución
db.users.updateOne(
   { username: "janedoe" },
   { $set: { age: 25 } }
);

Ejercicio 2

Incrementa el campo stock en 5 para todos los productos con category igual a "electronics".

// Solución
db.products.updateMany(
   { category: "electronics" },
   { $inc: { stock: 5 } }
);

Ejercicio 3

Elimina el campo discount de todos los productos con price mayor a 100.

// Solución
db.products.updateMany(
   { price: { $gt: 100 } },
   { $unset: { discount: "" } }
);

Conclusión

En esta sección, hemos aprendido cómo actualizar documentos en MongoDB utilizando diferentes métodos y operadores de actualización. Hemos visto cómo realizar actualizaciones simples y complejas, tanto en documentos únicos como en múltiples documentos. Los ejercicios prácticos proporcionados te ayudarán a reforzar los conceptos aprendidos.

En el próximo módulo, exploraremos el modelado de datos en MongoDB, donde aprenderemos a diseñar esquemas eficientes y a trabajar con documentos anidados y referencias.

© Copyright 2024. Todos los derechos reservados