如何防止PyMongo变异插入的dict?

时间:2018-02-11 13:58:11

标签: python mongodb mongodb-query pymongo

如果某个文档没有_id字段,MongoDB会自动为插入的文档指定一个正确的_id字段,我明白这一点,对我来说没问题。

但是为什么pymongo通过添加dict字段来改变插入的_id? 我希望在插入后使用插入的dict,并且额外的_id字段有点问题。

我知道我可以使用dict.pop('_id')删除_id字段,但如果它是文档列表(对于insert_many),则需要额外的努力。

我的问题是,是否有办法阻止插入的dictList[dict]被_id字段变异?

1 个答案:

答案 0 :(得分:0)

您可以通过插入字典或字典列表

来防止这种情况
In [1]: from copy import deepcopy

In [2]: from pymongo import MongoClient

In [3]: data = [{'a': 2}, {'a': 3}]

In [4]: with MongoClient() as client:
   ...:     client.test.collection.drop()
   ...:     result =  client.test.collection.insert_many(deepcopy(data))
   ...:     

In [5]: result.inserted_ids
[ObjectId('5a819d34d99e830381e025b0'), ObjectId('5a819d34d99e830381e025b1')]

In [6]: data
Out[6]: [{'a': 2}, {'a': 3}]