通过 _id 删除 mongodb 文档而不使用 ObjectId

问题描述 投票:0回答:1

我遇到了一个问题,我需要通过

_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 的见解或建议吗?

感谢您的协助。

mongodb pymongo
1个回答
0
投票

您可以使用

$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 }]
  }
})
© www.soinside.com 2019 - 2024. All rights reserved.