Mongooseは、findOneAndUpdateでこれをネイティブにサポートするようになりました(MongoDB findAndModifyを呼び出します)。
upsert =trueオプションは、オブジェクトが存在しない場合にオブジェクトを作成します。デフォルトはfalseです。
MyModel.findOneAndUpdate(
{foo: 'bar'}, // find a document with that filter
modelDoc, // document to insert when nothing was found
{upsert: true, new: true, runValidators: true}, // options
function (err, doc) { // callback
if (err) {
// handle error
} else {
// handle document
}
}
);