マングースは1回の操作でこれを行います。
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
);
この方法を使用すると、スキーマの「pre」関数を使用できなくなることに注意してください。
http://mongoosejs.com/docs/middleware.html
最新のmogooseの時点で、findbyidandupdateには「new:true」オプションのパラメーターを追加する必要があります。そうしないと、古いドキュメントが返されます。したがって、Mongooseバージョン4.x.xのアップデートは次のように変換されます:
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);