Saya baru saja membuang waktu 1 jam untuk masalah serupa. Saya telah menggunakan _.assign{In}() , lalu _.merge() lalu coba juga Document#set() saya selalu berakhir dengan entri berulang dalam array.
Solusi yang cocok untuk saya
- tetapkan
[]ke array apa pun yang akan disetel - lalu tetapkan seluruh pohon menggunakan
doc.set(attrs)
Contoh (dalam kasus saya, some_problematic_array menyebabkan perilaku aneh yang sama seperti dalam pertanyaan):
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);