Първо, изобщо не изглежда, че правите upsert. Синтаксисът за това в Java API ще има трети аргумент за db.update, зададен на true.
db.update(com.mongodb.DBObject, com.mongodb.DBObject, boolean /*upsert */, boolean /* multi */)
Не трябва да правите и $push - семантиката на това, което казвате, че искате да направите в mongo shell, ще бъде:
db.collection.update( {"resourceVacation":resourceID}, {$set:{"vacationList":[...]}, true)
Това казва:ако съществува resourceVacation с resourceID, тогава направете неговия "vacationList" това, което ви давам. Ако не съществува, вмъкнете този запис.
Ако използвате Java API директно, еквивалентът на горното би бил достатъчен.
Изглежда, че използвате MongoTemplate от Spring. Ще трябва да проверите коя негова версия използвате, защото не е използвала, за да разреши upserts . Този проблем обаче е маркиран като разрешен. Ако сте останали на по-старата версия, тогава има описано заобиколно решение тук .
Ако сте на най-новия, трябва да можете да използвате директно добавения метод upsert, както е описано тук .