Vva*_*n_G 8 python database mongodb pymongo
有人可以告诉我如何在MongoDB中处理DuplicateKeyError吗?
我正在编写一个python脚本,我将几个文档从两个不同的集合移动到第三个.由于具有几个相同的文档(具有相同的ObjectId),两个集合之间存在小的重叠.这导致以下结果:
DuplicateKeyError:E11000重复键错误集合:admin.collection_test index:id dup key:{:ObjectId('593a920b529e170d4b8fbf72')}
为了摆脱我使用的错误:
try:
do something
except pymongo.errors.DuplicateKeyError:
pass
Run Code Online (Sandbox Code Playgroud)
我期望通过使用"try-except"将所有非交叉文档移动到第三个集合,但是一旦第一次重叠(集合中已经存在的文档)出现,脚本就会安静地停止运行.非常感谢任何帮助!
如果您正在迭代文档,请尝试使用continue
而不是pass
.
for doc in documents:
try:
# insert into new collection
except pymongo.errors.DuplicateKeyError:
# skip document because it already exists in new collection
continue
Run Code Online (Sandbox Code Playgroud)
for doc in documents:
client.update_one({'_id': doc['_id']}, doc, upsert=True)
Run Code Online (Sandbox Code Playgroud)
您可以将update_one与upsert = True一起使用。如果doc已经存在,则会使用新doc更新doc,否则会创建新doc。
归档时间: |
|
查看次数: |
7248 次 |
最近记录: |