Je reçois l'erreur suivante lorsque j'essaie de faire un encart en vrac dans un vide mongodb collection.L'insertion MongoDB soulève une erreur de clé en double
pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: cmdDistros.locDistro.$id dup key: { : ObjectId('51dac9d0c74cd81acd85c0fd') }
Je ne suis pas un _id quand on spécifie que je crée l'un des documents, donc mongodb devrait créer l'index unique correct? Voici le code je:
#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)
Prendre le sort des mains de MongoDB, j'ai essayé de créer mon propre index à l'aide:
#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)
La déclaration d'impression a montré chaque IDNUM que les documents ont été créés, et ils étaient tous uniques et incrémentés comme prévu. Cependant sur l'insertion, j'ai reçu l'erreur:
pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: cmdDistros.locDistro.$id dup key: { : 0 }
et un seul document a été inséré dans ma base de données.
Je suis complètement perplexe, quelqu'un a une réponse à la question de savoir pourquoi cela pourrait se produire?
Je ne sais pas ce qui est arrivé, mais le problème a en quelque sorte réussi pour se réparer ... J'ai juste couru le code encore et encore et cela a fonctionné ... bizarre .. si quelqu'un a une explication, je voudrais toujours savoir juste au cas où cela se reproduise ... et en passant, les entrées La ligne .append est une faute de frappe, la position réelle est alignée avec la pour ci-dessus. – RoboCop87
Y a-t-il d'autres index définis dans la collection? – WiredPrairie
Aucun. Juste _id. Je voudrais utiliser ensure_index pour créer un index sur x y et heading, mais ils ne sont pas uniques donc je ne suis pas sûr que cela fonctionne. Indépendamment, seul _id est indexé à ce stade. – RoboCop87