6. Actualización de documentos
Actualizar documentos en MongoDB va más allá del simple $set.
Operadores de actualización
Los operadores más comunes:
$set: establece el valor de un campo
db.unicorns.updateOne(
{ name: 'Aurora' },
{ $set: { weight: 470 } }
)
$unset: elimina un campo del documento
db.unicorns.updateOne(
{ name: 'Aurora' },
{ $unset: { vampires: "" } }
)
$inc: incrementa (o decrementa) un valor numérico
// Incrementa vampiros en 2
db.unicorns.updateOne(
{ name: 'Aurora' },
{ $inc: { vampires: 2 } }
)
// Decrementa vampiros en 5
db.unicorns.updateOne(
{ name: 'Horny' },
{ $inc: { vampires: -5 } }
)
$min: actualiza solo si el nuevo valor es menor
db.scores.updateOne(
{ _id: 1 },
{ $min: { lowScore: 150 } }
)
$max: actualiza solo si el nuevo valor es mayor
db.scores.updateOne(
{ _id: 1 },
{ $max: { highScore: 1000 } }
)
$rename: renombra un campo
db.users.updateOne(
{ name: 'Ana' },
{ $rename: { 'name': 'fullName' } }
)
Operadores para arrays
$push: añade un elemento al final de un array
db.unicorns.updateOne(
{ name: 'Aurora' },
{ $push: { loves: 'sugar' } }
)
$pull: elimina todas las ocurrencias de un valor del array
db.unicorns.updateOne(
{ name: 'Aurora' },
{ $pull: { loves: 'carrot' } }
)
$addToSet: añade un elemento solo si no existe (sin duplicados)
db.unicorns.updateOne(
{ name: 'Aurora' },
{ $addToSet: { loves: 'apple' } }
)
Upsert
Un upsert actualiza un documento si existe, o lo inserta si no existe. Es muy útil para contadores o registros de eventos.
db.hits.updateOne(
{ page: 'unicorns' },
{ $inc: { hits: 1 } },
{ upsert: true }
)
La primera vez, como no existe el documento, lo crea con hits: 1. Las siguientes veces, incrementa el contador.
Actualizar múltiples documentos
Por defecto, updateOne solo actualiza el primer documento que encuentra. Para actualizar todos los que coinciden, usa updateMany:
// Vacuna a TODOS los unicornios
db.unicorns.updateMany(
{},
{ $set: { vaccinated: true } }
)
Actividad 1
- Incrementa en 10 los vampiros de Aurora
- Añade 'watermelon' a los amores de Kenny
- Elimina el campo 'weight' de Solnara
- Añade el campo 'location: "stable"' a todos los unicornios
- Incrementa en 5 los vampiros de todos los unicornios femeninos
Este trabajo está bajo una licencia Attribution-NonCommercial-NoDerivatives 4.0 International.
Desafíos de programación atemporales y multiparadigmáticos
Te encuentras ante un librillo de actividades, divididas en 2 niveles de dificultad. Te enfrentarás a los casos más comunes que te puedes encontrar en pruebas técnicas o aprender conceptos elementales de programación.
Comprar el libro
Comentarios
Todavía no hay ningún comentario.