嘗試向空的 mongodb集合執行批量插入時出現以下錯誤。MongoDB插入引發重複密鑰錯誤
pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: cmdDistros.locDistro.$id dup key: { : ObjectId('51dac9d0c74cd81acd85c0fd') }
我沒有在創建任何文檔時指定_id,所以mongodb應該創建唯一索引正確嗎?下面是我使用的代碼:
#Populate database with uniform distribution
entries = []
for coor in freeIndices:
for theta in range(360):
entry = {"x" : coor[0], "y" : coor[1], "heading" : theta}
for i in range(numData):
entry["data" + str(i)] = 1./numData
entries.append(entry)
print "Entries created, loading into database..."
locDistro.insert(entries)
以命運了MongoDB的手,我嘗試使用創建我自己的索引:
#Populate database with uniform distribution
entries = []
idNum = 0
for coor in freeIndices:
for theta in range(360):
print idNum
entry = {"_id" : idNum, "x" : coor[0], "y" : coor[1], "heading" : theta}
idNum += 1
for i in range(numData):
entry["data" + str(i)] = 1./numData
entries.append(entry)
print "Entries created, loading into database..."
locDistro.insert(entries, manipulate = False)
print語句表明每個IDNUM作爲創建的文件,和他們都是獨一無二的,並像預期的那樣增加。然而,在插入時,我收到錯誤:
pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: cmdDistros.locDistro.$id dup key: { : 0 }
並且只有一個文檔被插入到我的數據庫中。
我完全難住,任何人都有答案,爲什麼這可能會發生?
我不知道發生了什麼,但問題始終總算修復自己...我只是一遍又一遍地運行代碼,它只是工作....怪異..如果任何人有一個解釋,我仍然想知道,以防萬一它再次發生......順便說一下,條目.append行是一個錯字,實際的位置與上面的它是一致的。 – RoboCop87
集合中是否還有其他索引定義? – WiredPrairie
無。只是_id。我想使用ensure_index在x y和標題上創建索引,但它們不是唯一的,所以我不確定這是否可行。無論在這一點上只有_id被索引。 – RoboCop87