Skip to content

Commit b1002dd

Browse files
authored
Merge pull request #2097 from bagerard/remove_deprecated_pymongo_methods
remove pymongo deprecated methods: find_and_modify & remove
2 parents a4fe091 + 8f57279 commit b1002dd

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

mongoengine/fields.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from bson import Binary, DBRef, ObjectId, SON
1111
import gridfs
1212
import pymongo
13+
from pymongo import ReturnDocument
1314
import six
1415
from six import iteritems
1516

@@ -1964,21 +1965,24 @@ def generate(self):
19641965
sequence_name = self.get_sequence_name()
19651966
sequence_id = '%s.%s' % (sequence_name, self.name)
19661967
collection = get_db(alias=self.db_alias)[self.collection_name]
1967-
counter = collection.find_and_modify(query={'_id': sequence_id},
1968-
update={'$inc': {'next': 1}},
1969-
new=True,
1970-
upsert=True)
1968+
1969+
counter = collection.find_one_and_update(
1970+
filter={'_id': sequence_id},
1971+
update={'$inc': {'next': 1}},
1972+
return_document=ReturnDocument.AFTER,
1973+
upsert=True)
19711974
return self.value_decorator(counter['next'])
19721975

19731976
def set_next_value(self, value):
19741977
"""Helper method to set the next sequence value"""
19751978
sequence_name = self.get_sequence_name()
19761979
sequence_id = "%s.%s" % (sequence_name, self.name)
19771980
collection = get_db(alias=self.db_alias)[self.collection_name]
1978-
counter = collection.find_and_modify(query={"_id": sequence_id},
1979-
update={"$set": {"next": value}},
1980-
new=True,
1981-
upsert=True)
1981+
counter = collection.find_one_and_update(
1982+
filter={"_id": sequence_id},
1983+
update={"$set": {"next": value}},
1984+
return_document=ReturnDocument.AFTER,
1985+
upsert=True)
19821986
return self.value_decorator(counter['next'])
19831987

19841988
def get_next_value(self):

mongoengine/queryset/base.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,9 +481,10 @@ def delete(self, write_concern=None, _from_doc_delete=False,
481481
write_concern=write_concern,
482482
**{'pull_all__%s' % field_name: self})
483483

484-
result = queryset._collection.remove(queryset._query, **write_concern)
485-
if result:
486-
return result.get('n')
484+
with set_write_concern(queryset._collection, write_concern) as collection:
485+
result = collection.delete_many(queryset._query)
486+
if result.acknowledged:
487+
return result.deleted_count
487488

488489
def update(self, upsert=False, multi=True, write_concern=None,
489490
full_result=False, **update):

tests/queryset/queryset.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1857,8 +1857,8 @@ class BlogPost(Document):
18571857
self.Person.objects()[:1].delete()
18581858
self.assertEqual(1, BlogPost.objects.count())
18591859

1860-
def test_limit_with_write_concern_0(self):
1861-
1860+
def test_delete_edge_case_with_write_concern_0_return_None(self):
1861+
"""Return None when write is unacknowledged"""
18621862
p1 = self.Person(name="User Z", age=20).save()
18631863
del_result = p1.delete(w=0)
18641864
self.assertEqual(None, del_result)

0 commit comments

Comments
 (0)