सबसे पहले, ऐसा नहीं लगता कि आप अप्सर्ट कर रहे हैं। जावा एपीआई में इसके लिए सिंटैक्स में db.update को सही पर सेट करने के लिए तीसरा तर्क होगा।
db.update(com.mongodb.DBObject, com.mongodb.DBObject, boolean /*upsert */, boolean /* multi */)
आपको $push भी नहीं करना चाहिए - आप जो कहते हैं उसका शब्दार्थ आप मोंगो शेल में करना चाहते हैं:
db.collection.update( {"resourceVacation":resourceID}, {$set:{"vacationList":[...]}, true)
यह कहता है:यदि संसाधन अवकाश में संसाधन आईडी मौजूद है, तो उसकी "अवकाश सूची" बनाएं जो मैं आपको दे रहा हूं। अगर यह मौजूद नहीं है तो यह रिकॉर्ड डालें।
यदि आप सीधे जावा एपीआई का उपयोग कर रहे थे, तो उपरोक्त के बराबर पर्याप्त होगा।
ऐसा लगता है कि आप स्प्रिंग से MongoTemplate का उपयोग कर रहे हैं। आपको यह जांचना होगा कि आप इसके किस संस्करण का उपयोग कर रहे हैं क्योंकि इसका उपयोग अपसर्ट की अनुमति देने के लिए नहीं किया गया था। . हालांकि उस मुद्दे को हल के रूप में चिह्नित किया गया है। यदि आप पुराने संस्करण पर अटके हुए हैं, तो एक समाधान वर्णित है यहां ।
यदि आप नवीनतम पर हैं, तो आपको नई जोड़ी गई अपरर्ट विधि का सीधे उपयोग करने में सक्षम होना चाहिए, जैसा कि वर्णित है यहां ।