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

MongoDB og upsert problem

For det første ser det slet ikke ud til, at du laver en upsert. Syntaksen for det i Java API ville have et tredje argument til db.update sat til sand.

   db.update(com.mongodb.DBObject, com.mongodb.DBObject, boolean /*upsert */, boolean /* multi */)

Du burde heller ikke lave et $push - semantikken for det, du siger, du vil gøre i mongo-shell ville være:

db.collection.update( {"resourceVacation":resourceID}, {$set:{"vacationList":[...]}, true)

Dette siger:hvis ressourceVacation med ressource-ID findes, så lav dens "ferieliste", hvad jeg giver dig. Hvis den ikke findes, så indsæt denne post.

Hvis du brugte Java API direkte, ville det, der svarer til ovenstående, være tilstrækkeligt.

Det ser ud til, at du bruger MongoTemplate fra Spring. Du bliver nødt til at tjekke, hvilken version af den du bruger, fordi den ikke brugte til at tillade upserts . Det problem er dog markeret som løst. Hvis du sidder fast på den ældre version, er der en løsning beskrevet her .

Hvis du er på den seneste, bør du være i stand til at bruge den nyligt tilføjede upsert-metode direkte, som beskrevet her .



  1. Laravel 5.2 Mongo MonogDB Kunne ikke parse MongoDB URI

  2. Midlertidig fejl i navneopløsning redis

  3. Hvad er den bedste datastruktur til at gemme disse data på mongoDB?

  4. MongoDB $add