✏️ Actualizar documentos (Update)
MongoDB permite modificar documentos mediante los métodos updateOne(), updateMany() y replaceOne(). A diferencia de SQL (UPDATE), aquí usamos operadores especiales como $set, $inc, $unset, etc.
🛠️ 1️⃣ Métodos principales
- updateOne() → Actualiza el primer documento que coincida.
- updateMany() → Actualiza todos los documentos que coincidan.
- replaceOne() → Reemplaza un documento completo.
📝 2️⃣ Actualizar campos con $set
Actualizar un dato concreto sin modificar el resto:
db.usuarios.updateOne(
{ nombre: "Ana Torres" },
{ $set: { telefono: "600123123" } }
)
Actualizar varios campos a la vez:
db.usuarios.updateOne(
{ correo: "ana@correo.com" },
{ $set: { ciudad: "Valencia", activo: true } }
)
➕ 3️⃣ Incrementar valores con $inc
Aumentar la cantidad de un producto:
db.productos.updateOne(
{ nombre: "Teclado RGB" },
{ $inc: { stock: 5 } }
)
Reducir el precio en 10 unidades:
db.productos.updateOne(
{ nombre: "Monitor LG" },
{ $inc: { precio: -10 } }
)
❌ 4️⃣ Eliminar campos con $unset
Eliminar el campo "descuento" de un producto:
db.productos.updateOne(
{ nombre: "Altavoz Bluetooth" },
{ $unset: { descuento: "" } }
)
📦 5️⃣ Actualizar múltiples documentos (updateMany)
Ejemplo: activar todos los usuarios:
db.usuarios.updateMany(
{},
{ $set: { activo: true } }
)
Aplicar un aumento general del 10% en precios:
db.productos.updateMany(
{},
{ $mul: { precio: 1.10 } }
)
$mul multiplica el valor actual del campo.
🆕 6️⃣ Reemplazar un documento completo (replaceOne)
Reemplaza todo el documento excepto el _id:
db.usuarios.replaceOne(
{ correo: "ana@correo.com" },
{
nombre: "Ana Torres",
ciudad: "Madrid",
activo: true
}
)
Advertencia: si olvidas incluir un campo, se pierde.
🛒 7️⃣ Ejemplo real: actualización típica de e-commerce
Reducir stock cuando se realiza una compra:
db.productos.updateOne(
{ sku: "PROD123" },
{ $inc: { stock: -1 } }
)
Marcar un producto como destacado:
db.productos.updateOne(
{ sku: "PROD123" },
{ $set: { destacado: true } }
)
🔧 8️⃣ upsert: actualizar o insertar si no existe
Si el documento NO existe, lo crea.
db.usuarios.updateOne(
{ correo: "nuevo@correo.com" },
{ $set: { nombre: "Nuevo Usuario", activo: true } },
{ upsert: true }
)
🧠 Resumen rápido
- $set: modificar valores.
- $inc: sumar o restar números.
- $unset: eliminar campos.
- updateOne / updateMany: actualizar uno o varios.
- replaceOne: reemplazar documento entero.
- upsert: si no existe, lo crea.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias