sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb upsert kastar DuplicateKeyException

Problemet som jag bara gissar kan vara följande:

Du hittar operationer baserat på många kriterier. Det betyder att om det misslyckas på grund av att en param ( i kriterier ) inte matchar kommer den att försöka infoga dokumentet.

Så chansen finns att du försöker uppdatera samma dokument med samma _id men några av de andra kriterierna matchar inte, vilket gör att det infogas igen vilket kommer att orsaka duplicate key undantag. Betrakta exemplet nedan

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. Spring Boot med MongoTemplate

  2. hur förhindrar man inloggning på konsolen när den är ansluten till mongodb från java?

  3. MongoDB $strLenBytes

  4. Avrundning till 2 decimaler med MongoDB-aggregationsramverk