sql >> Base de Datos >  >> NoSQL >> MongoDB

Actualizar y devolver documento en Mongodb

collection.update() solo informará la cantidad de documentos que se vieron afectados por su propia devolución de llamada.

Para recuperar los documentos mientras los modifica, puede usar collection.findOneAndUpdate() en su lugar (anteriormente .findAndModify() ).

collection.findOneAndUpdate(
    { "code": req.body.code },
    { $set: req.body.updatedFields },
    { returnOriginal: false },
    function (err, documents) {
        res.send({ error: err, affected: documents });
        db.close();
    }
);

El returnOriginal opción (o new con Mongoose) le permite especificar qué versión de un documento encontrado (original [predeterminado] o actualizado) se pasa a la devolución de llamada.

El returnDocument: "before" | "after" funciona para la versión 3.6.9 .

Descargo de responsabilidad:esta respuesta actualmente se refiere al controlador Node.js a partir de la versión 3.6. A medida que se lanzan nuevas versiones, consulte su documentación para ver si hay posibles advertencias de obsolescencia y alternativas recomendadas.