Así que digamos que tengo este fragmento de código:
const old = await Sports.findById(sportId);Y me devuelve lo siguiente:
{ _id: "sdsdsds", name: "sdsdsds", enabled: true, markets: [ { enabled: true, defId: "LOOKATME", name: "sdsdsd", }, { enabled: false, defId: "dfsdfdsfs", name: "sdsdfsdsd", }, ] }Ahora, digamos que quiero actualizar el mercado con el defId de "LOOKATME" para que se vuelva falso. ¿Sería posible agregar dentro de una función de actualización como esta:
const updated = await Sports.findByIdAndUpdate(old, [LOGIC], {new: true});¿Cómo haría para hacer esto para que el resultado sea este:
{ _id: "sdsdsds", name: "sdsdsds", enabled: true, markets: [ { enabled: false, // this is what changed defId: "LOOKATME", name: "sdsdsd", }, { enabled: false, defId: "dfsdfdsfs", name: "sdsdfsdsd", }, ] }const updated = await Sports.updateOne({_id: old._id, "markets.defId": "LOOKATME"}, {$set: {"markets.$.enabled": false}}, {new: true});