如何让mongodb(pymongo)返回_id作为响应中的键值对而不是对象结构?

时间:2015-09-13 23:53:43

标签: python mongodb flask pymongo

我正在使用pymongo和烧瓶。 我的用例,我可以将mongodb的文档_id作为整数(来自关系存储的迁移数据)或monogo的ObjectId()(生成)。

在得到回应中我分别得到这样的事情:

第一种情况(带整数ID):

{
    "_id": 123456,
     "name": "something.."
}

第二种情况使用ObjectId()

{
    "_id":
        {
           "$oid": "55f5efc60640fd09620c109c"
        },
     "name": "something.."
}

我想在两种情况下都有统一的结构 - 所以我想第二个案例就像 -

{
    "_id": "55f5efc60640fd09620c109c",
     "name": "something.."
}

如何实现这一目标? 除了遍历每个结果并替换值?

1 个答案:

答案 0 :(得分:1)

找到我的问题的解决方案,分享可以帮助他人。

在mongo中没有架构,所以你可以将_id的值作为任何东西(整数/对象/字符串,就像我的情况一样)。

在python中,我这样做是为了拥有命令键值对结构:

from bson.objectid import ObjectId
new_doc = db.collection.insert({'_id': str(ObjectId())})  // This won't create additional _id field in your document.

找到像:

doc = db.collections.find_one({'_id': "12-char-mongodb-type-id"})
doc = db.collections.find_one({'_id': 12345})