mongodb spring 添加数据
@Autowired
private MongoTemplate mongoTemplate;
/**
collectionName:为mongodb 表数据的名字
dictOrg 为我自己业务里的查询条件
result 为要入的数据
date 为我自己业务里需要的时间日期
**/
private void setData(String collectionName,DictOrg dictOrg, JSONObject result,String date){
Query query = Query.query(Criteria.where("orgid").is(dictOrg.getOrgid()).and("orgdata.date").is(date));//构建查询query
if(!(mongoTemplate.exists(query, collectionName))){ //没有则插入,有则不做任何操作
Query query1 = Query.query(Criteria.where("orgid").is(dictOrg.getOrgid()));//构建查询query
if(mongoTemplate.exists(query1,collectionName)){ // 如果有这个机构 没有这个日期,将新的日期数据添加进去
Query query2 = Query.query(Criteria.where("orgid").is(dictOrg.getOrgid()));
Update update = new Update();
update.addToSet("orgdata", result.getJSONArray("orgdata").get(0));
mongoTemplate.upsert(query2, update,collectionName);
}else{
mongoTemplate.insert(result, collectionName); //没有插入,有则不做任何操作
}
}
mongodb 格式为:
{
"_id": ObjectId("6139c0b635f9055c73a7eda8"),
"orgid": "1",
"orgname": "test",
"orgdata": [
{
"date": "20210901",
"data": {
"incomeDay": "59.99",
"incomeSameDay": "57.15",
"incomeYearOnYearDay": "5.0",
"incomeZYDay": "26.16"
},
"detailData": ""
},
{
"date": "20210902",
"data": {
"incomeDay": "59.99",
"incomeSameDay": "57.15",
"incomeYearOnYearDay": "5.0",
"incomeZYDay": "26.16"
},
"detailData": ""
}
]
}
如果orgid不存在则插入一条数据,如果存在,看其相应的日期有没有,没有则在orgdata数里添加新的日期数据