为什么不能将2个dicts插入mongoDB(来自python)

时间:2014-02-02 04:21:02

标签: pymongo

我正在尝试将文档(此处为:字典)两次添加到mongo-db集合中。 python抛出一个错误(但似乎从mongo shell工作)

>>> d={'a': 123, 'b': 'abcde'}
>>> collection.insert(d)
>>> collection.insert(d)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  [...]
DuplicateKeyError: E11000 duplicate key error index: test_database.test_collection.$_id_  dup     key: { : ObjectId('52edc7cda9658c12603db9af') }

为什么会出错? 我没有指定任何ID。

1 个答案:

答案 0 :(得分:3)

问题是在第一个插入时,shell会在将其插入集合之前自动为您创建一个objectid。然后,当您尝试插入完全相同的文档(使用对象ID)时,您将遇到重复的键错误,因为该集合已具有具有相同ID的文档。

如果您确实要两次插入相同的文档,请尝试从文档中删除ObjectId,然后插入。

尝试,

d={'a': 123, 'b': 'abcde'}
db.collection.insert(d);
d={'a': 123, 'b': 'abcde'}
db.collection.insert(d);