pymongo在插入时将_id字段添加到我的字典中

时间:2013-11-05 09:38:58

标签: python windows mongodb python-2.7 pymongo

考虑这个例子:

f = {'a': 'b'}
col.insert(f)
print f

,其中col是mongodb集合。

以上代码将在以下行中打印:

{'a': 'b', '_id': ObjectId('5278bc183e8b1310247e047b')}

我知道为什么mongo在将文档插入集合时需要添加_id字段,但我不明白为什么它必须修改我作为参数传递的字典。我希望我的字典f保持不变。

我知道插入后我可以del f['_id'],但是我可以传递给insert的任何参数,这会使它不能修改我的字典吗?

2 个答案:

答案 0 :(得分:2)

只需将manipulate参数设置为False,例如:

col.insert(f, manipulate=False)

请参阅http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.insert

答案 1 :(得分:1)

如果我正确理解insert method上的文档,manipulate参数就是您要查找的内容:

  

如果manipulate为True,则使用已添加到此数据库的任何SONManipulator实例操作文档。在这种情况下,如果文档尚未包含“_id”,则将添加“_id”,并且将返回“id”(或多个文档的“_id”值列表)。如果操作为False且文档不包含“_id”,则服务器将添加“_id”。服务器不返回它创建的“_id”,因此返回None。