De acordo com os documentos do Mongoose :
Conforme resposta SO anterior
Model.findByIdAndUpdate()
"Encontra um documento correspondente, atualiza-o de acordo com o argumento de atualização, passando quaisquer opções e retorna o documento encontrado (se houver) para o retorno de chamada."
Nas opções configure upsert para true:
upsert:bool - cria o objeto se ele não existir. o padrão é falso.
Model.findByIdAndUpdate(id, { $set: { name: 'SOME_VALUE' }}, { upsert: true }, callback)