diff --git a/bson/son.py b/bson/son.py index 9e9defb20..c233f7843 100644 --- a/bson/son.py +++ b/bson/son.py @@ -226,12 +226,12 @@ class SON(dict): def transform_value(value): if isinstance(value, list): return [transform_value(v) for v in value] - if isinstance(value, SON): - value = dict(value) - if isinstance(value, dict): - for k, v in value.iteritems(): - value[k] = transform_value(v) - return value + elif isinstance(value, dict): + return dict([ + (k, transform_value(v)) + for k, v in value.iteritems()]) + else: + return value return transform_value(dict(self))