Skip to content

Commit bdc6ae0

Browse files
committed
removed mutation of getfield even when values aren't converted
1 parent 07e6ffb commit bdc6ae0

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

django_mongodb_backend/query_conversion/expression_converters.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,6 @@ def convert(cls, args):
7979
if cls.operator == "$eq":
8080
return {field_name: value}
8181
return {field_name: {cls.operator: value}}
82-
# If simple getFields are found, still mutate the original args list
83-
for i, arg in enumerate(args):
84-
if cls.is_simple_get_field(arg):
85-
args[i] = "$" + cls.convert_field_name(arg)
8682
return None
8783

8884

@@ -140,15 +136,6 @@ def convert(cls, in_args):
140136
and all(cls.is_simple_value(v) for v in values)
141137
):
142138
return {field_name: {"$in": values}}
143-
# Mutate the original list
144-
for i, arg in enumerate(in_args):
145-
if cls.is_simple_get_field(arg):
146-
in_args[i] = "$" + cls.convert_field_name(arg)
147-
if isinstance(arg, list | tuple | set):
148-
arg[i] = [
149-
"$" + cls.convert_field_name(v) if cls.is_simple_get_field(v) else v
150-
for v in arg
151-
]
152139
return None
153140

154141

tests/expression_converter_/test_match_conversion.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,18 @@ def test_getfield_usage_on_dual_binary_operator(self):
223223
]
224224
}
225225
}
226-
expected = [{"$match": {"$expr": {"$gt": ["$price.value", "$discounted_price.value"]}}}]
226+
expected = [
227+
{
228+
"$match": {
229+
"$expr": {
230+
"$gt": [
231+
{"$getField": {"input": "$price", "field": "value"}},
232+
{"$getField": {"input": "$discounted_price", "field": "value"}},
233+
]
234+
}
235+
}
236+
}
237+
]
227238
self.assertOptimizerEqual(expr, expected)
228239

229240
def test_getfield_usage_on_onesided_binary_operator(self):

0 commit comments

Comments
 (0)