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
  1. Incrementa en 10 los vampiros de Aurora
  2. Añade 'watermelon' a los amores de Kenny
  3. Elimina el campo 'weight' de Solnara
  4. Añade el campo 'location: "stable"' a todos los unicornios
  5. 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

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

¿Me invitas a un café?

Comentarios

Todavía no hay ningún comentario.

Visitantes en tiempo real

Estás solo: 🐱