Skip to content

Commit 8f57279

Browse files
committed
remove pymongo deprecated methods: find_and_modify & remove
1 parent e8dbd12 commit 8f57279

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
@@ -480,9 +480,10 @@ def delete(self, write_concern=None, _from_doc_delete=False,
480480
write_concern=write_concern,
481481
**{'pull_all__%s' % field_name: self})
482482

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

487488
def update(self, upsert=False, multi=True, write_concern=None,
488489
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)