MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongodb upsert rzuca wyjątek DuplicateKeyException

Problem, który tylko zgaduję, może być następujący:

Wykonujesz operacje wyszukiwania oparte na wielu kryteriach. Oznacza to, że jeśli nie powiedzie się z powodu niezgodności parametru (w kryteriach), spróbuje wstawić dokument.

Są więc szanse, że próbujesz zaktualizować ten sam dokument z tym samym _id, ale niektóre inne kryteria nie są zgodne, powodując ponowne wstawienie, co spowoduje wyjątek zduplikowanego klucza. Rozważ poniższy przykład

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. Jak wyłączyć logowanie sterownika java mongoDB?

  2. $expr arrayElementAt nie działa w agregacji dla osadzonego dokumentu

  3. Czy można mongodumpować ostatnie x rekordów z kolekcji?

  4. Nie można pobrać z zagnieżdżonej tablicy i zwrócić poddokumentu zapytania za pomocą MongoTemplate

  5. Błąd „mongo.js:L112 Błąd:nie można połączyć się z serwerem 127.0.0.1:27017 w src/mongo/shell/mongo.js:L112”