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 6e2e9e5d..75123644 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -2199,6 +2199,22 @@ 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.""" + with db_ops_tracker() as q: + adult = (self.Person.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'], { + '_cls': 'Person', + '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. """