MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb-Upsert löst DuplicateKeyException aus

Das Problem, das ich nur vermute, könnte folgendes sein:

Sie führen Suchoperationen basierend auf vielen Kriterien durch. Das heißt, wenn es aufgrund einer Nichtübereinstimmung eines Parameters ( in den Kriterien ) fehlschlägt, wird versucht, das Dokument einzufügen.

Es besteht also die Möglichkeit, dass Sie versuchen, dasselbe Dokument mit derselben _id zu aktualisieren, aber einige der anderen Kriterien stimmen nicht überein, was dazu führt, dass es erneut eingefügt wird, was zu einer Ausnahme bei doppeltem Schlüssel führt. Betrachten Sie das folgende Beispiel

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 }