diff --git a/django/contrib/mongodb/compiler.py b/django/contrib/mongodb/compiler.py index 3a1a14fd14..9937e91345 100644 --- a/django/contrib/mongodb/compiler.py +++ b/django/contrib/mongodb/compiler.py @@ -10,6 +10,7 @@ class SQLCompiler(object): "lt": lambda params, value_annotation, negated: {"$lt": params[0]}, "isnull": lambda params, value_annotation, negated: {"$ne": None} if value_annotation == negated else None, "gt": lambda params, value_annotation, negated: {"$gt": params[0]}, + "in": lambda params, value_annotation, negated: {"$in": params}, } def __init__(self, query, connection, using): diff --git a/tests/regressiontests/mongodb/tests.py b/tests/regressiontests/mongodb/tests.py index 2f3177fa61..13177ffa9f 100644 --- a/tests/regressiontests/mongodb/tests.py +++ b/tests/regressiontests/mongodb/tests.py @@ -258,3 +258,29 @@ class MongoTestCase(TestCase): ], lambda g: g.name, ) + + def test_in(self): + q = Group.objects.create(name="Queen", year_formed=1971) + e = Group.objects.create(name="The E Street Band", year_formed=1972) + + self.assertQuerysetEqual( + Group.objects.filter(year_formed__in=[1972]), [ + "The E Street Band", + ], + lambda g: g.name, + ) + + self.assertQuerysetEqual( + Group.objects.filter(year_formed__in=[1972, 1971]), [ + "Queen", + "The E Street Band", + ], + lambda g: g.name + ) + + self.assertQuerysetEqual( + Group.objects.exclude(year_formed__in=[1972]), [ + "Queen", + ], + lambda g: g.name, + )