En mi aplicación, intento actualizar un objeto anidado en una matriz como se muestra a continuación. Al realizar pruebas en Postman, hay un retraso que hace que tenga que realizar dos solicitudes para ver el valor actualizado.
if (taskStatus) { const taskStatusNew = await Board.findOneAndUpdate( { "columns.tasks._id": req.params.id, }, { $set: { "columns.$[].tasks.$[t]": req.body, }, }, { arrayFilters: [ { "t._id": req.params.id, }, ], } ); res.status(200).json(taskStatusNew); }De forma predeterminada, findOneAndUpdate() devuelve el documento tal como estaba antes de que se aplicara la actualización. Por lo tanto, debe establecer la new opción en true si está utilizando mangosta.
const taskStatusNew = await Board.findOneAndUpdate( { "columns.tasks._id": req.params.id, }, { $set: { "columns.$[].tasks.$[t]": req.body, }, }, { arrayFilters: [ { "t._id": req.params.id, }, ], new: true } );Artículo de documentación para referencia: https://mongoosejs.com/docs/tutorials/findoneandupdate.html
Si su pregunta es devolver el valor actualizado, use esto, - {returnDocument: 'after'} , solo necesita agregar esto en otro parámetro, luego le dará un valor actualizado.