diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index 61d43490..bb04ee37 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -233,8 +233,7 @@ def update(_doc_cls=None, **update): # Support decrement by flipping a positive value's sign # and using 'inc' op = 'inc' - if value > 0: - value = -value + value = -value elif op == 'add_to_set': op = 'addToSet' elif op == 'set_on_insert': diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index a15807a5..2d5b5b0f 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -1826,6 +1826,11 @@ class QuerySetTest(unittest.TestCase): post.reload() self.assertEqual(post.hits, 10) + # Negative dec operator is equal to a positive inc operator + BlogPost.objects.update_one(dec__hits=-1) + post.reload() + self.assertEqual(post.hits, 11) + BlogPost.objects.update(push__tags='mongo') post.reload() self.assertTrue('mongo' in post.tags)