Pymongo 几个星期都做得很好,直到我遇到以下错误:
回溯(最近一次通话最后): 文件“main.py”,第 14 行,在 主要的() 文件“main.py”,第 11 行,在 main 下载器.process() 文件“/mnt/vdisk/crawler/eurostat/downloader.py”,第 25 行,处理中 self.processHelper() 文件“/mnt/vdisk/crawler/eurostat/downloader.py”,第 61 行,在 processHelper 中 self.base.insert(文档) 文件“/usr/local/lib/python2.7/dist-packages/pymongo/collection.py”,第 359 行,插入 continue_on_error,self.__uuid_subtype),安全) _send_message 中的文件“/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py”,第 852 行 rv = self.__check_response_to_last_error(response) 文件“/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py”,第 793 行,在 __check_response_to_last_error 引发 DuplicateKeyError(详细信息 [“错误”]) pymongo.errors.DuplicateKeyError: E11000 重复键错误索引:test.eurostatdata.$_id_ dup key: { : ObjectId('50fd056757b924675af21a0e') }
_id 绝对不是该领域之一。我一直都是靠mongodb生成自己的_id,所以以前从来没有遇到过这种问题。
插入代码:
文件 = [] 对于 split_table_data 中的键: 文件 = ele 文档["title"] = ele["title"] 文档["table_data"] = split_table_data[key] 文档[“cols”] = colsHeader 文档[“字幕”] = 键 文件。附加(文件) self.base.insert(文档)
我使用最新的 pymongo 包和最新的 mongodb。
唯一可能导致这种情况的是我试图插入一个超过大小限制的文档。
我努力了
db.repairDatabase()
db.test.validate()