MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

O upsert do Mongoose não cria a propriedade de esquema padrão


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( ...