मुझे इस प्रश्न का बहुत अच्छा समाधान मिला है
//make a new description here
Description d = new Description();
d.setCode("no");
d.setName("norwegian");
d.setNorwegian("norwegian");
d.setEnglish("english");
//build query
Query query = new Query(Criteria.where("code").is(description.getCode()));
//build update
DBObject dbDoc = new BasicDBObject();
mongoTemplate.getConverter().write(d, dbDoc); //it is the one spring use for convertions.
Update update = Update.fromDBObject(dbDoc);
//run it!
mongoTemplate.upsert(query, update, "descriptions");
कृपया ध्यान दें कि Update.fromDBObject dbDoc में सभी फ़ील्ड के साथ एक अपडेट ऑब्जेक्ट लौटाता है। यदि आप केवल गैर-शून्य फ़ील्ड को अपडेट करना चाहते हैं, तो आपको अशक्त फ़ील्ड को बाहर करने के लिए एक नई विधि को कोड करना चाहिए।
उदाहरण के लिए, फ्रंट-एंड नीचे जैसा दस्तावेज़ पोस्ट करता है:
//make a new description here
Description d = new Description();
d.setCode("no");
d.setEnglish("norwegian");
हमें केवल 'भाषा' फ़ील्ड को अपडेट करने की आवश्यकता है:
//return Update object
public static Update fromDBObjectExcludeNullFields(DBObject object) {
Update update = new Update();
for (String key : object.keySet()) {
Object value = object.get(key);
if(value!=null){
update.set(key, value);
}
}
return update;
}
//build udpate
Update update = fromDBObjectExcludeNullFields(dbDoc);