mongoose hace esto por usted en una sola operación.
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
);
Tenga en cuenta que al usar este método, no podrá hacer uso de las funciones "pre" del esquema.
http://mongoosejs.com/docs/middleware.html
A partir de la última versión de mogoose, findbyidandupdate debe tener un parámetro opcional "nuevo:verdadero". De lo contrario, se le devolverá el documento anterior. Por lo tanto, la actualización de Mongoose Version 4.x.x se convierte en:
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);