【问题标题】:How to use Mongo ObjectId as a unique id in my DB如何在我的数据库中使用 Mongo ObjectId 作为唯一 ID
【发布时间】:2021-02-14 00:21:48
【问题描述】:

我有一个带有原始网络抓取数据的大型 Mongo 数据库。我有一个读取 mongo 文档并在我的 MySQL 报告数据库中创建记录的进程。我需要跟踪我在 MongoDB 中处理的文档。我正在尝试使用 ObjectID,但似乎无法将其转换为字符串。我使用 Pymongo 作为我的客户端。

 for i in Coll.find({"ISBN": {"$exists" : True}})[20:50]:
        print('starting collection loop')
        #Check if doc has been processed
        if not ProcessingLog.objects.filter(mongoID = i['_id']).exists():
            mongoID = ProcessingLog(mongoID = i['_id'],source = 'amazon',createDate= datetime.datetime.now())

      ....

我收到以下错误

ValueError:解包的值太多

【问题讨论】:

  • 你想做什么,你的问题并没有放弃太多?这也不是问题
  • 我正在尝试记录我已处理的 Mongo 文档。我不想删除它们,也没有对数据库的写访问权限。我想使用 _id 在我的 MySQL 数据库中创建一条记录,并描述我处理文件的时间。我正在使用 PYmongo,但似乎无法从 Mongo 获取一个字符串,我可以将其存储在我的数据库中,并用于检查我是否在下次我的摄取代码迭代 MongoDB 时处理了该文档。

标签: python mongodb pymongo


【解决方案1】:

pymongo 包含使用 ObjectId() 作为其他类型的方法。

您可以在docs here 中查看它们是什么。你可能只用 str(o) 就可以了。

【讨论】:

  • 我已阅读文档,但仍然无法使用。
  • 当你使用 str(i['_id']) 而不是 i['_id'] 会发生什么?
猜你喜欢
  • 2022-12-07
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2019-11-13
  • 2016-12-10
相关资源
最近更新 更多