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 .