sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb upsert vyvolá výjimku DuplicateKeyException

Problém, který jen hádám, může být následující:

Vyhledáváte operace na základě mnoha kritérií. To znamená, že pokud selže kvůli jakékoli neshodě parametru (v kritériích), pokusí se vložit dokument.

Je tedy pravděpodobné, že se pokoušíte aktualizovat stejný dokument se stejným _id, ale některá další kritéria neodpovídají, což způsobí jeho opětovné vložení, což způsobí výjimku duplicitního klíče. Zvažte níže uvedený příklad

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. Aby se Json.NET + MongoDB Bson hrály pěkně dohromady

  2. Problémy s výkonem omezené kolekce

  3. Dotaz MongoDB pro vrácení pouze vloženého dokumentu

  4. jak funguje Mongodb index?