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

Valor padrão não definido ao usar Atualizar com Upsert como verdadeiro


Para adicionar padrões ao seu documento se ele foi criado com findOneAndUpdate (não existia antes da consulta) e você não forneceu o campo na atualização, você deve usar setDefaultsOnInsert .

Quando upsert e setDefaultsOnInsert ambos são true , os padrões serão definidos se o registro não for encontrado e um novo for criado. Isso ignora o fluxo de trabalho de ter que verificar se o registro existe e, caso contrário, criar um novo com 'salvar' apenas para garantir que os padrões estejam definidos .

Eu tive o mesmo problema (registro criado com findOneAndUpdate com upsert: true ) e o valor padrão de um campo não foi adicionado ao registro, mesmo que estivesse no esquema. Isso é apenas em relação à adição de padrões ao usar findOneAndUpdate para criar documentos, não para pular a atualização do campo 'criado'.

por exemplo.
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)