Za prvé, vůbec to nevypadá, že děláte rozhořčení. Syntaxe pro to v Java API by měla mít třetí argument db.update nastavený na true.
db.update(com.mongodb.DBObject, com.mongodb.DBObject, boolean /*upsert */, boolean /* multi */)
Také byste neměli dělat $push – sémantika toho, co říkáte, že chcete dělat v mongo shell, by byla:
db.collection.update( {"resourceVacation":resourceID}, {$set:{"vacationList":[...]}, true)
To říká:pokud resourceVacation s resourceID existuje, pak vytvořte jeho "vacationList", co vám dávám. Pokud neexistuje, vložte tento záznam.
Pokud byste používali přímo Java API, stačil by ekvivalent výše uvedeného.
Vypadá to, že používáte MongoTemplate od Spring. Budete muset zkontrolovat, jakou verzi používáte, protože nepoužila k povolení upserts . Tento problém je však označen jako vyřešený. Pokud jste uvízli na starší verzi, pak je zde popsané řešení zde .
Pokud používáte nejnovější verzi, měli byste být schopni přímo použít nově přidanou metodu upsert, jak je popsáno zde .