sql >> Base de Datos >  >> NoSQL >> MongoDB

El valor predeterminado no se establece al usar Actualizar con Upsert como verdadero

Para agregar valores predeterminados a su documento si se creó con findOneAndUpdate (no existía antes de la consulta) y no proporcionó el campo en la actualización, debe usar setDefaultsOnInsert .

Cuando upsert y setDefaultsOnInsert ambos son true , los valores predeterminados se establecerán si no se encuentra el registro y se crea uno nuevo. Esto omite el flujo de trabajo de tener que verificar si el registro existe y, si no, crear uno nuevo con 'guardar' solo para asegurarse de que se establezcan los valores predeterminados .

He tenido el mismo problema (registro creado con findOneAndUpdate con upsert: true ) y el valor predeterminado para un campo no se agregó al registro, aunque estaba en el esquema. Esto solo se refiere a agregar valores predeterminados cuando se usa findOneAndUpdate para crear documentos, no para saltarse la actualización del campo 'creado'.

por ejemplo

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