MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb upsert хвърля DuplicateKeyException

Проблемът, който само предполагам, може да е следният:

Вие извършвате операции за намиране въз основа на много критерии. Това означава, че ако не успее поради някакво несъответствие на параметър (в критерии), тогава ще се опита да вмъкне документа.

Така че има шансове да се опитвате да актуализирате същия документ със същия _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 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Приложението Heroku се срива след актуализиране на MongoDB до 3.0

  2. Защо крайният 0x00 байт след BSON низ (а не Cstring/ename)?

  3. Може ли Meteor правилно да обработва данни, актуализирани външно директно към базата данни MongoDB?

  4. Въпросителна променлива Typescript

  5. MongoDB $setIsSubset