O que está acontecendo é que nenhum dos valores de validação, middleware ou padrão do Mongoose são usados ao chamar qualquer uma das famílias de métodos "update", como
findByIdAndUpdate . Eles são invocados apenas por chamadas para save ou create . A razão para isso é que as chamadas de "atualização" são efetivamente passadas para o driver nativo, com o Mongoose fornecendo apenas conversão de tipo dos campos com base na definição do esquema.
Atualização do Mongoose 4.0
O Mongoose agora suporta a configuração de padrões quando um novo documento é criado durante uma
update , findOneAndUpdate , ou findByIdAndUpdate upsert. Defina o setDefaultsOnInsert opção para true para habilitar isso. Isso usa o $setOnInsert operador para criar os padrões na inserção. var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...