diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 376e3fab..85616c85 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -483,6 +483,10 @@ class BaseQuerySet(object): with set_write_concern(queryset._collection, write_concern) as collection: result = collection.delete_many(queryset._query) + + # If we're using an unack'd write concern, we don't really know how + # many items have been deleted at this point, hence we only return + # the count for ack'd ops. if result.acknowledged: return result.deleted_count diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index c58176b8..c86e4095 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -1858,7 +1858,11 @@ class QuerySetTest(unittest.TestCase): self.assertEqual(1, BlogPost.objects.count()) def test_delete_edge_case_with_write_concern_0_return_None(self): - """Return None when write is unacknowledged""" + """Return None if the delete operation is unacknowledged. + + If we use an unack'd write concern, we don't really know how many + documents have been deleted. + """ p1 = self.Person(name="User Z", age=20).save() del_result = p1.delete(w=0) self.assertEqual(None, del_result)