From 0007535a469c45bf0cc72a486c37b871a6f01c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20W=C3=B3jcik?= Date: Sun, 4 Dec 2016 00:33:42 -0500 Subject: [PATCH] Add support for cursor.comment (#1420) --- mongoengine/queryset/base.py | 8 ++++++++ tests/queryset/queryset.py | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index bc70b44a..5f748b50 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -933,6 +933,14 @@ class BaseQuerySet(object): queryset._ordering = queryset._get_order_by(keys) return queryset + def comment(self, text): + """Add a comment to the query. + + See https://docs.mongodb.com/manual/reference/method/cursor.comment/#cursor.comment + for details. + """ + return self._chainable_method("comment", text) + def explain(self, format=False): """Return an explain plan record for the :class:`~mongoengine.queryset.QuerySet`\ 's cursor. diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index 072b9122..88ae18aa 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -339,7 +339,6 @@ class QuerySetTest(unittest.TestCase): def test_update_write_concern(self): """Test that passing write_concern works""" - self.Person.drop_collection() write_concern = {"fsync": True} @@ -2215,6 +2214,21 @@ class QuerySetTest(unittest.TestCase): a.author.name for a in Author.objects.order_by('-author__age')] self.assertEqual(names, ['User A', 'User B', 'User C']) + def test_comment(self): + """Make sure adding a comment to the query works.""" + class User(Document): + age = IntField() + + with db_ops_tracker() as q: + adult = (User.objects.filter(age__gte=18) + .comment('looking for an adult') + .first()) + ops = q.get_ops() + self.assertEqual(len(ops), 1) + op = ops[0] + self.assertEqual(op['query']['$query'], {'age': {'$gte': 18}}) + self.assertEqual(op['query']['$comment'], 'looking for an adult') + def test_map_reduce(self): """Ensure map/reduce is both mapping and reducing. """