【问题标题】:Remove BSON Object ID when querying mongo DB using pymongo使用 pymongo 查询 mongo DB 时删除 BSON 对象 ID
【发布时间】:2019-06-13 04:42:05
【问题描述】:

我正在使用Pymongo和flask构建一个rest API,文档存储为以下BSON格式:

{'_id': ObjectId('123'), 'title':"test"}

如何查询Mongo DB获取以下格式的文档或将查询结果转换为以下格式?

{'_id':'123', 'title':"test"}

【问题讨论】:

标签: python mongodb pymongo pymongo-3.x


【解决方案1】:

您可以将str 申请到您的ObjectId

item = {'_id': ObjectId('123'), 'title':"test"}
item['_id'] = str(item['_id'])

【讨论】:

  • 感谢您的回复,是的,我最终这样做了,想知道是否有更好的方法来使用 BSON API 实现这一目标?
  • 您可以通过MongoClient构造函数document_class参数更改文档使用的类型(默认为dict),但我不知道有什么方法可以更改特定的序列化字段。
【解决方案2】:

我假设您希望重命名集合中文档的 _id。您可以通过查询数据库集合然后替换集合中的文档来做到这一点。

myquery = {'title':"test"}
# _ = col.find(myquery)
# To check if it exists
y = db['my collection'].update_one(myquery, {"$set": {'_id': '123'}})

希望对您有所帮助。如果您提供有关数据库和集合的更多信息,我可以提供更多帮助。

【讨论】:

  • 嗨布莱斯,感谢您的回复。不,我不想更新数据库,我需要在通过 rest API {'_id':'123', 'title':"test"} 发送结果时将文档转换为正确的 JSON 格式
  • 啊,好的。好吧,这会将您的 ObjectID('123') 替换为 '123'
  • 是的,我不想更改数据库。我想将数据以 BSON 格式保存在 mongo 中,但希望在发送到客户端时将其转换为超出预期的格式。
猜你喜欢
  • 2013-03-07
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多