MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Upsert do Mongodb jogando DuplicateKeyException


O problema que estou apenas supondo pode estar seguindo:

Você está fazendo operações de localização com base em muitos critérios. Isso significa que se ele falhar devido a qualquer incompatibilidade de um parâmetro ( em critérios ), ele tentará inserir o documento.

Portanto, é provável que você esteja tentando atualizar o mesmo documento com o mesmo _id, mas alguns dos outros critérios não correspondem, fazendo com que ele seja inserido novamente, o que causará uma exceção de chave duplicada. Considere o exemplo abaixo
test:Mongo > db.example.update({ _id : 1, a : 1, b : 1},{ $set : {d : 1}}, true, false)
test:Mongo > db.example.find()
{ "_id" : 1, "a" : 1, "b" : 1, "d" : 1 }
test:Mongo > db.example.update({ _id : 1, a : 1, b : 2},{ $set : {d : 1}}, true, false)
E11000 duplicate key error index: test.example.$_id_  dup key: { : 1.0 }