Mongoose 4以降では、 new:trueを設定することを忘れないでください アップサートと一緒に使用しないと、更新されたドキュメントではなく、古いドキュメントが戻り値として取得されます。
これは、特にリクエストがドキュメントを作成する場合、new:trueを指定しない場合のように、非常に注意が必要です。nullドキュメント(既存のドキュメントはありません)を受け取りますが、エラーは発生しません。
var myObj = ...;
collection.findOneAndUpdate(
{uniqueAttr: myObj.uniqueAttr},
myObj,
{upsert: true, new: true},
function(...) {...}