Según los docs de Mongoose :
Según respuesta SO anterior
Modelo.findByIdAndUpdate()
"Encuentra un documento coincidente, lo actualiza de acuerdo con el argumento de actualización, pasa cualquier opción y devuelve el documento encontrado (si lo hay) a la devolución de llamada".
En las opciones configure upsert a verdadero:
upsert:bool:crea el objeto si no existe. por defecto es falso.
Model.findByIdAndUpdate(id, { $set: { name: 'SOME_VALUE' }}, { upsert: true }, callback)