MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il valore predefinito non è impostato durante l'utilizzo di Aggiorna con Upsert come true

Per aggiungere valori predefiniti al tuo documento se è stato creato con findOneAndUpdate (non esisteva prima della query) e non hai fornito il campo nell'aggiornamento dovresti usare setDefaultsOnInsert .

Quando upsert e setDefaultsOnInsert sono entrambi true , le impostazioni predefinite verranno impostate se il record non viene trovato e ne viene creato uno nuovo. Questo salta il flusso di lavoro di dover controllare se il record esiste e, in caso contrario, crearne uno nuovo con 'salva' solo per assicurarsi che i valori predefiniti siano impostati .

Ho riscontrato lo stesso problema (record creato con findOneAndUpdate con upsert: true ) e il valore predefinito per un campo non è stato aggiunto al record, anche se era nello schema. Ciò riguarda solo l'aggiunta di valori predefiniti quando si utilizza findOneAndUpdate per creare documenti, non per saltare l'aggiornamento del campo 'creato'.

es.

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