Me encontré con esta situación frustrante y me sorprendió un poco la solución documentada del sitio web de Mongoose.
entonces, lo que esto significa es guardar las propiedades anidadas de la matriz/objeto (elemento en su caso), debe ser explícito al especificar el cambio .markModified('Item')
var objectToSave = new ModelToSave({
_id : req.params.id,
Item : customObject
});
objectToSave.markModified('Item');
objectToSave.save();
Dado que es un tipo sin esquema, puede cambiar el valor a cualquier otra cosa que desee, pero Mongoose pierde la capacidad de detectar automáticamente y guardar esos cambios. Para "decirle" a Mongoose que el valor de un tipo Mixto ha cambiado, llame al método .markModified(path) del documento pasando la ruta al tipo Mixto que acaba de cambiar.
-- http://mongoosejs.com/docs/schematypes.html#mixed