mangusta lo fa per te in un'unica operazione.
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
);
Tieni presente che utilizzando questo metodo non sarai in grado di utilizzare le funzioni "pre" dello schema.
http://mongoosejs.com/docs/middleware.html
A partire dall'ultimo mogoose findbyidandupdate deve avere un parametro opzionale "new:true" aggiunto. Altrimenti ti verrà restituito il vecchio documento. Quindi l'aggiornamento per Mongoose versione 4.x.x viene convertito in:
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);