我遇到了一个问题,我需要通过
_id
删除 MongoDB 文档,而不使用 PyMongo 库中的 ObjectId。通常,似乎需要导入 ObjectId 并用于标识要删除的文档。然而,我正在探索是否有一种替代方法可以在不依赖ObjectId
的情况下实现这一目标。下面的例子是我想要删除的文档
# MongoDB Document
{ _id: ObjectId("65fee1b40839f1f886ee94a9"), category: 'Cars' }
# Pymongo
import pymongo
from bson import ObjectId
document_id = ObjectId("65fee1b40839f1f886ee94a9")
result = collection.delete_one({"_id": document_id})`
if result:
return result.deleted_count
在此示例中,我使用
ObectId
来删除文档。任何人都可以提供有关如何使用 PyMongo 通过 _id
删除文档而不显式使用 ObjectId 的见解或建议吗?
感谢您的协助。
$toObjectId
: 在查找查询(或聚合管道)中将字符串转换为 ObjectID
db.collection.find({
$expr: {
$eq: ["$_id", { $toObjectId: "65fee1b40839f1f886ee94a9" }]
}
})
所以你的Python代码应该是:
document_text_id: str = ... # like "65fee1b40839f1f886ee94a9"
result = collection.delete_one({
"$expr": {
"$eq": ["$_id", { "$toObjectId": document_text_id }]
}
})