mongodb+spring boot如何修改深层嵌套对象
mongodb+spring boot如何修改深层嵌套对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
在最近的工作中使用到对mongodb深层嵌套对象的修改,研究了很久,故做此笔记。
1.开发环境:mongodb+spring boot项目,使用mongoTemplate进行修改
2.数据为三层嵌套TopicModel——>TopicTableModel——>TopicColumnModel
3.修改代码展示
(1)修改第二级TopicTableModel对象
@OverridepublicbooleanupdateTableModel(TopicTableModeltableModel){Queryquery=newQuery();query.addCriteria(Criteria.where("tableList.tableId").is(tableModel.getTableId()));Updateupdate=newUpdate().set("tableList.$.tableName",tableModel.getTableName()).set("tableList.$.tableComment",tableModel.getTableComment()).set("tableList.$.status",Integer.valueOf(tableModel.getStatus()));//.set("tableList.$.topicCode",tableModel.getTopicCode());UpdateResulttableUr=this.mongoTemplate.upsert(query,update,TopicModel.class);if((tableUr.getMatchedCount()>0L)||(tableUr.getUpsertedId()!=null)){returntrue;}returnfalse;}
(3)修改第三级(TopicColumnModel),需要先遍历定位到修改的第三级对像的索引
@OverridepublicbooleanupdateColumnModel(TopicColumnModeltopicColumnModel,StringtmId,StringtbId){Queryquery=newQuery();query.addCriteria(Criteria.where("tableList.tableId").is(tbId));Updateupdate=newUpdate();List<TopicModel>topicModels=mongoTemplate.find(query,TopicModel.class);for(inti=0;i<topicModels.size();i++){if(topicModels.get(i).getId().equals(tmId)){List<TopicTableModel>topicTableModels=topicModels.get(i).getTableList();for(intj=0;j<topicTableModels.size();j++){if(topicTableModels.get(j).getTableId().equals(tbId)){List<TopicColumnModel>topicColumnModels=topicTableModels.get(j).getColList();for(intk=0;k<topicColumnModels.size();k++){if(topicColumnModels.get(k).getColId().equals(topicColumnModel.getColId())){update.set("tableList.$.colList."+k+".colName",topicColumnModel.getColName()).set("tableList.$.colList."+k+".desc1",topicColumnModel.getDesc1()).set("tableList.$.colList."+k+".desc2",topicColumnModel.getDesc2()).set("tableList.$.colList."+k+".internalMark",topicColumnModel.getInternalMark()).set("tableList.$.colList."+k+".qualifierMark",topicColumnModel.getQualifierMark()).set("tableList.$.colList."+k+".chineseName",topicColumnModel.getChineseName()).set("tableList.$.colList."+k+".dataSource",topicColumnModel.getDataSource()).set("tableList.$.colList."+k+".getRules",topicColumnModel.getGetRules()).set("tableList.$.colList."+k+".dataType",topicColumnModel.getDataType()).set("tableList.$.colList."+k+".dataLength",topicColumnModel.getDataLength()).set("tableList.$.colList."+k+".pkey",topicColumnModel.isPkey()).set("tableList.$.colList."+k+".index",topicColumnModel.isIndex()).set("tableList.$.colList."+k+".nullAble",topicColumnModel.isNullAble()).set("tableList.$.colList."+k+".unique",topicColumnModel.isUnique()).set("tableList.$.colList."+k+".colComment",topicColumnModel.getColComment()).set("tableList.$.colList."+k+".defaultValue",topicColumnModel.getDefaultValue()).set("tableList.$.colList."+k+".check",topicColumnModel.getCheck()).set("tableList.$.colList."+k+".attributeType",topicColumnModel.getAttributeType());}}}}}}UpdateResulttableUr=this.mongoTemplate.updateFirst(query,update,TopicModel.class);if((tableUr.getMatchedCount()>0L)||(tableUr.getUpsertedId()!=null)){returntrue;}returnfalse;}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。