私は、データベース内のこのような文書があります。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
今私は私の質問に、これを修正しようとしていた方法を追加しました –