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 }