考虑这个例子:
f = {'a': 'b'}
col.insert(f)
print f
,其中col
是mongodb集合。
以上代码将在以下行中打印:
{'a': 'b', '_id': ObjectId('5278bc183e8b1310247e047b')}
我知道为什么mongo在将文档插入集合时需要添加_id
字段,但我不明白为什么它必须修改我作为参数传递的字典。我希望我的字典f
保持不变。
我知道插入后我可以del f['_id']
,但是我可以传递给insert
的任何参数,这会使它不能修改我的字典吗?
答案 0 :(得分:2)
只需将manipulate
参数设置为False
,例如:
col.insert(f, manipulate=False)
答案 1 :(得分:1)
如果我正确理解insert method上的文档,manipulate
参数就是您要查找的内容:
如果manipulate为True,则使用已添加到此数据库的任何SONManipulator实例操作文档。在这种情况下,如果文档尚未包含“_id”,则将添加“_id”,并且将返回“id”(或多个文档的“_id”值列表)。如果操作为False且文档不包含“_id”,则服务器将添加“_id”。服务器不返回它创建的“_id”,因此返回None。