mangusto faz isso para você em uma operação.
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
);
Por favor, tenha em mente que usando este método, você não poderá fazer uso das funções "pré" do esquema.
http://mongoosejs.com/docs/middleware.html
A partir do último mogoose findbyidandupdate precisa ter um parâmetro opcional "new:true" adicionado a ele. Caso contrário, você receberá o documento antigo de volta. Portanto, a atualização para a versão 4.x.x do Mongoose é convertida em:
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);