disruptive
disruptive

Reputation: 5946

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?

Upvotes: 28

Views: 32554

Answers (2)

Bruce Wayne
Bruce Wayne

Reputation: 1

You can simply do:

result = mongo.db.xxx.delete_one({})

Upvotes: 0

JohnnyHK
JohnnyHK

Reputation: 311865

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

Upvotes: 59

Related Questions