sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb upsert kaster DuplicateKeyException

Det problem, som jeg bare gætter på, kan være følgende:

Du finder operationer baseret på mange kriterier. Det betyder, at hvis det mislykkes på grund af uoverensstemmelse mellem en param (i kriterier), vil det forsøge at indsætte dokumentet.

Så der er chancer for, at du forsøger at opdatere det samme dokument med samme _id, men nogle af de andre kriterier matcher ikke, hvilket får det til at indsætte igen, hvilket vil forårsage duplikatnøgleundtagelse. Overvej nedenstående eksempel

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. Postmand socket hang up kunne ikke oprette forbindelse til Mongodb

  2. Importmetoderne for mongoimport

  3. 2 måder at vise et indeks i MongoDB

  4. Redis - bedste måde at gemme et stort kort på (ordbog)