【发布时间】:2014-08-18 13:51:33
【问题描述】:
我正在通过以下方式使用 pymongo:
from pymongo import *
a = {'key1':'value1'}
db1.collection1.insert(a)
print a
打印出来
{'_id': ObjectId('53ad61aa06998f07cee687c3'), 'key1': 'value1'}
在控制台上。 我了解 _id 已添加到 mongo 文档中。但是为什么这也被添加到我的 python 字典中呢?我不打算这样做。我想知道这样做的目的是什么?我可以将此字典用于其他目的,并且字典会作为将其插入文档的副作用而更新?如果我不得不将这个字典序列化为一个 json 对象,我会得到一个
ObjectId('53ad610106998f0772adc6cb') is not JSON serializable
错误。在将文档插入数据库时,插入函数不应该保持字典的值相同。
【问题讨论】:
-
_id 是文档的主键,是必填字段。如果_id不存在,MongoDB会自动创建一个ObjectId作为_id。
-
docs.mongodb.org/manual/core/crud-introduction/…。实际上对象不是 json 它是 bson
-
我的问题不是为什么将_id添加到mongodb文档中。我的问题是为什么将这个键添加到我的 python 字典中,因为我不打算更改我的字典对象。我正在更新我的问题以更清楚地说明这一点。
-
key被添加是因为它是一个新的文档并且你发送到insert的参数是引用的。如果您不想要它,只需将其取消设置
-
我不明白。为什么和python团队有关?是 pymongo 将该 _id 添加到内存字典中(在插入之后)。据我所知,没有必要这样做。
标签: python mongodb dictionary pymongo