Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deleting document in PyMongo from id

I seem to be struggling to find the right way of deleting a document. I.e. should I be using remove() or delete_one() for example and also what is the canonical method of deleting by id, which is a string.

I.e. should I be using the following:

mongo.db.xxx.delete_one({'_id': { "$oid" : str(_id) } })

or can I use another format?

mongo.db.xxx.remove({'_id': { "$oid" : str(_id) } })
mongo.db.xxx.remove({'_id': ObjectId(_id) })

What is the canonical form?

like image 686
disruptive Avatar asked Oct 05 '15 13:10

disruptive


1 Answers

remove is deprecated in the 3.x release of pymongo, so the current canonical form would be to use delete_one:

from bson.objectid import ObjectId

result = mongo.db.xxx.delete_one({'_id': ObjectId(_id)})

The call returns a DeleteResult in which you can inspect the deleted_count field to see if it found a document to delete

like image 126
JohnnyHK Avatar answered Oct 16 '22 09:10

JohnnyHK