Cuando modificas el contenido de un Mixed campo como freeform_data, debe notificar a Mongoose que ha cambiado su valor llamando a markModified(path) en el documento modificado o en un save() posterior la llamada no lo guardará.
Por ejemplo:
user.freeform_data = { foo: 'bar' };
user.markModified('freeform_data');
user.save();