sql >> Database >  >> NoSQL >> MongoDB

Mongodb upsert gooien DuplicateKeyException

Het probleem waarvan ik vermoed dat het het volgende is:

U doet zoekbewerkingen op basis van vele criteria. Dat betekent dat als het mislukt vanwege een mismatch van een parameter ( in criteria ), het zal proberen het document in te voegen.

De kans is dus groot dat u hetzelfde document probeert bij te werken met dezelfde _id, maar dat sommige van de andere criteria niet overeenkomen, waardoor het opnieuw wordt ingevoegd, wat een dubbele sleuteluitzondering veroorzaakt. Beschouw het onderstaande voorbeeld

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. MongoDB assymetrische retour van gegevens, eerste item in array volledig geretourneerd, de rest met weggelaten bepaalde eigenschappen?

  2. Meteor retourneert ongeldige hexadecimale tekenreeksfout bij het maken van ObjectID?

  3. MongoDB vergelijkt alleen datums zonder tijden

  4. MongoDB-query vergelijkt 2 velden in dezelfde verzameling zonder $where