Zgodnie z dokumentacją Mongoose :
Zgodnie z poprzednią odpowiedzią na SO
Model.findByIdAndUpdate()
"Znajduje pasujący dokument, aktualizuje go zgodnie z argumentem aktualizacji, przekazuje wszelkie opcje i zwraca znaleziony dokument (jeśli istnieje) do wywołania zwrotnego."
W opcjach ustaw upsert na true:
upsert:bool - tworzy obiekt, jeśli nie istnieje. domyślnie fałszywe.
Model.findByIdAndUpdate(id, { $set: { name: 'SOME_VALUE' }}, { upsert: true }, callback)