Ho appena perso 1 ora su un problema simile. Ho usato _.assign{In}()
, quindi _.merge()
poi ho provato anche Document#set()
ho sempre finito con voci ripetute nell'array.
La soluzione che funziona per me
- assegna
[]
a qualsiasi array che sta per essere impostato - quindi assegna l'intero albero usando
doc.set(attrs)
Esempio (nel mio caso, some_problematic_array
ha causato lo stesso strano comportamento della domanda):
var attrs = _.pick(req.body, [
'name',
'tags', // ...
"some_problematic_array"
]);
var doc = ///... ;
if( attrs.some_problematic_array ) doc.some_problematic_array = [];
^^^^ ***workaround***
doc.set(attrs);