2015-10-05 12 views
5

Tôi dường như đang vật lộn để tìm đúng cách xóa tài liệu. I E. tôi có nên sử dụng remove() hoặc delete_one() cho ví dụ hay không và phương pháp xóa theo chuẩn là id, là string.Xóa tài liệu trong PyMongo khỏi id

I.e. tôi có nên sử dụng các mục sau:

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

hoặc tôi có thể sử dụng định dạng khác không?

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

Dạng thức kinh điển là gì?

Trả lời

15

remove bị phản đối trong phiên bản 3.x của pymongo, vì vậy hình thức kinh điển hiện tại sẽ được sử dụng delete_one:

from bson.objectid import ObjectId 

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

Cuộc gọi trả về một DeleteResult trong đó bạn có thể kiểm tra việc deleted_count lĩnh vực để xem họ đã tìm thấy tài liệu để xóa

+0

Cảm ơn, bạn có biết ngoại lệ lỗi không? Tôi không thể gỡ lỗi vào lúc này. I E. nếu không tìm thấy ID. – disruptive

+0

Khi tôi thử điều này tại dòng lệnh, tôi nhận được thông tin sau: 'NameError: name 'ObjectId' không được định nghĩa' – disruptive

+0

@Navonod Bạn cần nhập nếu bạn chưa làm điều đó. Xem câu trả lời được cập nhật. – JohnnyHK

Các vấn đề liên quan