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);