'Using _get_changed_fields iterate and remove any fields that
are marked as changed.'

def _clear_changed_fields(self):

    for changed in self._get_changed_fields():
        parts = changed.split('.')
        data = self
        for part in parts:
            if isinstance(data, list):
                try:
                    data = data[int(part)]
                except IndexError:
                    data = None
            elif isinstance(data, dict):
                data = data.get(part, None)
            else:
                data = getattr(data, part, None)
            if hasattr(data, '_changed_fields'):
                if getattr(data, '_is_document', False):
                    continue
                data._changed_fields = []
    self._changed_fields = []
