Проблемът, който само предполагам, може да е следният:
Вие извършвате операции за намиране въз основа на много критерии. Това означава, че ако не успее поради някакво несъответствие на параметър (в критерии), тогава ще се опита да вмъкне документа.
Така че има шансове да се опитвате да актуализирате същия документ със същия _id, но някои от другите критерии не съответстват, което го кара да се вмъкне отново, което ще доведе до изключение на дублиран ключ. Разгледайте примера по-долу
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 }