我有一個這樣的文件在我的數據庫:MongoDB中如何查詢和這樣的地圖<字符串,地圖<字符串,對象>>更新數據
{ "MyDiaries":[{
id:"diary1",
"MyCalendar1" : {
"Date1" : {
"holidaytype" : "CHRISTMAS",
"optional" : false
}
},
"MyCalendar2" : {
"Date1" : {
"holidaytype" : "CHRISTMAS",
"optional" : false
},
"Date2" : {
"holidaytype" : "NEWYEAR",
"optional" : true
}
}
},
{
id:"diary2",
"MyCalendar1" : {
"Date1" : {
"holidaytype" : "CHRISTMAS",
"optional" : false
}
},
"MyCalendar2" : {
"Date1" : {
"holidaytype" : "CHRISTMAS",
"optional" : false
},
"Date2" : {
"holidaytype" : "NEWYEAR",
"optional" : true
}
}
}
]
}
,並在Java的Map<MyCalendarString, Map<DateString, Object>>
。在插入數據時,我必須檢查是否存在特定的日記,日曆是否存在以及日期是否相同。
- 如果是這樣,那麼我們必須重寫。
- 如果沒有,那麼我們必須插入日期,如果它不在日曆中。
- 如果日曆本身不存在,那麼我們必須創建一個新的日曆。
請讓我知道我該怎麼做。
我有這個了,但它沒有工作:
Query query = new Query();
Criteria criteria = getContextCriteria().and(CALENDAR).is(model.getRateCalendar())
.and(DATE).is(model.getDate());
query.addCriteria(criteria);
update.(CALENDAR, getMyCalendars());//getMyCalendars() will give Map<String, Map<String, Object>>
FindAndModifyOptions findAndModifyOptions = FindAndModifyOptions.options().upsert(true).returnNew(true);
return mongoTemplate.findAndModify(query, update, findAndModifyOptions,clazz);
,看你這樣做的遠? – nullpointer
現在我已經添加了我的問題,我是如何解決這個 –