千家信息网

如何用mongodb和spring boot修改深层嵌套对象

发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,如何用mongodb和spring boot修改深层嵌套对象?这篇文章运用了实例代码展示,代码非常详细,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。1.开发环境:mongodb+spring b
千家信息网最后更新 2024年10月05日如何用mongodb和spring boot修改深层嵌套对象

如何用mongodb和spring boot修改深层嵌套对象?这篇文章运用了实例代码展示,代码非常详细,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。

1.开发环境:mongodb+spring boot项目,使用mongoTemplate进行修改
2.数据为三层嵌套TopicModel-->TopicTableModel-->TopicColumnModel
3.修改代码展示
(1)修改第二级TopicTableModel对象

@Override    public boolean updateTableModel(TopicTableModel tableModel) {        Query query = new Query();        query.addCriteria(Criteria.where("tableList.tableId").is(tableModel.getTableId()));        Update update = new Update().set("tableList.$.tableName", tableModel.getTableName())                .set("tableList.$.tableComment", tableModel.getTableComment())                .set("tableList.$.status", Integer.valueOf(tableModel.getStatus()));        // .set("tableList.$.topicCode", tableModel.getTopicCode());        UpdateResult tableUr = this.mongoTemplate.upsert(query, update, TopicModel.class);        if ((tableUr.getMatchedCount() > 0L) || (tableUr.getUpsertedId() != null)) {            return true;        }        return false;    }

(3)修改第三级(TopicColumnModel),需要先遍历定位到修改的第三级对像的索引

@Override    public boolean updateColumnModel(TopicColumnModel topicColumnModel, String tmId, String tbId) {        Query query = new Query();        query.addCriteria(Criteria.where("tableList.tableId").is(tbId));        Update update = new Update();        List topicModels = mongoTemplate.find(query, TopicModel.class);        for (int i = 0; i < topicModels.size(); i++) {            if (topicModels.get(i).getId().equals(tmId)) {                List topicTableModels = topicModels.get(i).getTableList();                for (int j = 0; j < topicTableModels.size(); j++) {                    if (topicTableModels.get(j).getTableId().equals(tbId)) {                        List topicColumnModels = topicTableModels.get(j).getColList();                        for (int k = 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());                            }                        }                    }                }            }        }        UpdateResult tableUr = this.mongoTemplate.updateFirst(query, update, TopicModel.class);        if ((tableUr.getMatchedCount() > 0L) || (tableUr.getUpsertedId() != null)) {            return true;        }        return false;    }

看完这篇文章,你们学会用mongodb和spring boot修改深层嵌套对象了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读。

0