Tengo un modelo de usuario algo como esto
{ _id:"something", email:"abc@gmail.com", contacts:[ {_id:"123",status:"PENDING"}, {_id:"456",status:"PENDING"}, {_id:"789",status:"PENDING"} ] }Y tengo una identificación de uno de los contactos del usuario "123" y quiero actualizar el estado de ese contacto específico de "PENDIENTE" a "EXITOSO". ¿Cómo puedo hacer eso?
La forma más fácil es con el identificador de matriz $ , así:
db.collection.updateOne({ email: "abc@gmail.com", "contacts._id": "123" }, { "$set": { "contacts.$.status": "SUCCESSFUL" } })El identificador de matriz actualiza el primer elemento de la matriz que coincide con la consulta.
db.collection.updateOne({ _id: "something" }, { contacts: [{ _id: "123", status: "SUCCESSFUL" }] }, function (err, res) { })