mongodb+spring boot如何修改深層嵌套對象,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在最近的工作中使用到對mongodb深層嵌套對象的修改,研究了很久,故做此筆記。
1.開發(fā)環(huán)境:mongodb+spring boot項目,使用mongoTemplate進行修改
2.數(shù)據(jù)為三層嵌套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<TopicModel> topicModels = mongoTemplate.find(query, TopicModel.class); for (int i = 0; i < topicModels.size(); i++) { if (topicModels.get(i).getId().equals(tmId)) { List<TopicTableModel> topicTableModels = topicModels.get(i).getTableList(); for (int j = 0; j < topicTableModels.size(); j++) { if (topicTableModels.get(j).getTableId().equals(tbId)) { List<TopicColumnModel> 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; }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
當前題目:mongodb+springboot如何修改深層嵌套對象-創(chuàng)新互聯(lián)
標題路徑:http://www.chinadenli.net/article48/gscep.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、ChatGPT、軟件開發(fā)、網(wǎng)站排名、搜索引擎優(yōu)化、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容