1. 程式人生 > >mongodbTemplate更新或刪除子元素為陣列的資料

mongodbTemplate更新或刪除子元素為陣列的資料

專案中用spring data mongodb,當一個類中有一個list集合(即陣列元素)時,刪除和修改這個元素的資料困擾了我好久,各種百度都搜不到(真心覺得百度很垃圾),後來在谷歌搜到了答案,記錄如下:

實體類如下:

package com.weixinplatform.wxwebserver.collection.template;

import java.util.List;
import java.util.Set;

/**
 * Created by jihb on 15/5/6.
 */
public class ViewTemplate {
    private String id;
    private String name;//模本名稱
    private String desc;//描述
    private String type;//模本型別
    //模板介面
    List<Template> template;
    public static class Template{
        private String id;
        private String view;//檢視名稱
        private String image;//圖片路徑

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getView() {
            return view;
        }

        public void setView(String view) {
            this.view = view;
        }

        public String getImage() {
            return image;
        }

        public void setImage(String image) {
            this.image = image;
        }
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public List<Template> getTemplate() {
        return template;
    }

    public void setTemplate(List<Template> template) {
        this.template = template;
    }
}

mongodb資料庫中的資料如下:

{
    "_id": ObjectId("5550622dfc194b340a1feb5f"),
    "name": "hsaflkjhdf",
    "desc": "dfsafsdafsafad",
    "type": "微企模板",
    "template": [
        {
            "_id": ObjectId("5550d3280a706d025d8eb5d6"),
            "view": "aaaaaaaaaaa",
            "image": "http://127.0.0.1:7012/staticdata/newsdata/template/images/redare/5550622dfc194b340a1feb5f/143136029221214278739681.jpg"
        }
    ]
}

刪除template子元素中的一條記錄:

Update update = new Update();
update.pull("template",new BasicDBObject("id",templateId));
Query query = Query.query(Criteria.where("id").is(viewTemplateId));
return mongodbTemplate.updateFirst(query,update,ViewTemplate.class);

修改template子元素的某一條滿足條件的記錄:

Update update =new Update();
update.set("template.$.view", view);
update.set("template.$.image", imagePath);
Query query = Query.query(new Criteria().andOperator(Criteria.where("id").is(viewTemplateId),Criteria.where("template").elemMatch(Criteria.where("id").is(templateId))));
return mongoTemplate.updateFirst(query, update, ViewTemplate.class);

刪除MongoDB陣列的某一條

Query query =new Query(Criteria.where("uuid").is(uuid));
//若多個查詢條件  可以拼接 .addCriteria()
ProjectNotice notice=mongoTemplate.findOne(query,ProjectNotice.class); //表字段對映類
notice.getNotice().forEach(t->{ //對應陣列
Update update=new Update();
update.pull("notice",t); //t對應的是集合的實體
mongoTemplate.updateFirst(query,update,ProjectNotice.class);  //執行指定條件的刪除

})

完,希望能夠幫助到你

相關推薦

mongodbTemplate更新刪除元素陣列資料

專案中用spring data mongodb,當一個類中有一個list集合(即陣列元素)時,刪除和修改這個元素的資料困擾了我好久,各種百度都搜不到(真心覺得百度很垃圾),後來在谷歌搜到了答案,記錄如下:實體類如下:package com.weixinplatform.wxw

spring data mongodb更新刪除元素陣列資料

專案中用spring data mongodb,當一個類中有一個list集合(即陣列元素)時,刪除和修改這個元素的資料困擾了我好久,各種百度都搜不到(真心覺得百度很垃圾),後來在谷歌搜到了答案,記錄如下: 實體類如下: package com.weixinplatform

JQuery 刪除元素

jquer blog emp 及其 實例 clas 內容 語法 query 刪除元素/內容 如需刪除元素和內容,一般可使用以下兩個 jQuery 方法: remove() - 刪除被選元素(及其子元素) empty() - 從被選元素中刪除子元素

Django中的QueryDict元素陣列的坑

一般在Django的檢視函式中使用request.POST來獲取請求體,request.POST是QueryDict類,通常作為dict來使用。 正常如下圖 但是昨天在使用的時候遇到一個錯誤,提示從QueryDict裡面pop出來的值型別為list。 一臉懵逼

恢復ORACLE被誤更新刪除資料的方法

今天嚇的頭疼,似乎是感冒了。本以為是在PPR環境做的操作,做完以後,定睛一看,WC,是PROD環境,嚇的我熱汗直流。下班後開始找恢復方法,終於找到了。頭疼欲裂,真的是嚇出病了。 刪除SQL如下: –delete * FROM witmsup_WORK whe

SQL Server XML基礎學習之--XML modify() 方法對 XML 資料中插入、更新刪除

/*------------------------------------------------------------------------------+ #| = : = : = : = : = : = : = : = : = : = : = : = : = :

Mysql執行更新刪除操作時不以主鍵作為where條件報錯

問題: 在執行 update prd_property set isdel = 1 where prdid = 211 時,報如下錯誤: Error Code: 1175. You are using

資料庫操作--已更新刪除的行值要麼不能使該行成為唯一行,要麼改變了多個行

在對一個表做試驗的時候,往裡面添加了幾條資料,後來發現原本想作為主鍵的欄位的值都為"NULL",這可不行,刪除重新來吧。選中刪除的時候就出現了 “已更改或刪除的行值要麼不能使改行成為唯一行,要麼改變了

JS判斷一個是否函式或者陣列(資料型別的判斷)

如下程式碼所示: 有幾個細節要注意 1)typeof(arr) === ‘object’ 使用typeof陣列,得到的是一個object,而不 是返回Array或者array 2)console.info(1 instanceof Number) //fal

如何向陣列中間插入刪除元素

第一種方法 使用splice方法 語法介紹  splice(start, deleteCount, value, ...) start  開始插入和(或)刪除的陣列元素的下標。 deleteCount  從start開始,包括start所指的元素在內要刪除的元素個數

父級overflowscroll時,絕對定位的元素會被隱藏一起滾動

需求:父級邊框固定,裡面的內容滾動 由於是圖片邊框,於是我把邊框的上下部分單獨切圖,中間重複部分平鋪 想要的效果圖: 一開始的寫法: html: <div class="paradise-wrap"> <div cl

父容器div內的元素divfloat時,父元素無法撐開(高度自適應)的解決方式以及css中position和float的介紹

先簡單給出父元素無法高度自適應時的解決方案:       第一種:在父容器上設定 overflow:auto或者hidden可以讓它自動包含子元素,從而具有了實際的height值。       第二種:在子元素的最下面加上一個 空元素,並且設定clear:both,但

EntityFrameWork使用TransactionScope分布式事務,存儲區更新、插入刪除語句影響到了意外的行數(0)。實體在加載後可能被修改刪除。刷新 ObjectStateManager 項 錯誤

bject require 鍵值 有一個 char 加載 ransac state system 最近在開發一個小型的物業管理系統,系統其中有一個功能需要每個月按抄的水表、電表等生成相應的費用,數據庫主要的基礎數據表有大樓水、電表、樓層水、電表、房間水電表;其中大樓和樓層的

dtd + 復雜元素元素出現次數 一次多次

ges block 珍惜 html XML 1.0 條件 sch version 禮悟:   好好學習多思考,尊師重道存感恩。葉見尋根三二一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉強身心,誠勸且行且珍惜。 xml:1.0

dtd ? 復雜元素元素出現次數 零次一次

網站 src 如果 出現一次 珍惜 version .com 三字經 type 禮悟:   好好學習多思考,尊師重道存感恩。葉見尋根三二一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉強身心,誠勸且行且珍惜。 xml:1.0

12W學習筆記——獨立查詢,更新刪除,建立視圖

記錄 date 筆記 獨立 https 清空 名單 sel 方式 查詢的學習進入了最後階段了,接下來我就來介紹一下查詢最後的獨立子查詢。 獨立子查詢基本上都是用SELECT FROM WHERE 三個語句。 例:在學院表、專業表中,查詢人文與管理學院下設各專業的簡稱

js將數組中一個多個字段相同的元素中合並

++ body 遇到 return json 合並 arr 可能 var 最近js中遇到js將數組中一個或多個字段相同的子元素中合並,相信很多朋友也有遇到,大家可能有多種方法,我在這裏記錄一個相對簡單的方法,當然大家如有其它更好的方法,請提出來大家共同學習。 //將經濟事

Python陣列取一個幾個元素值的例子,word[0:2],從第0個字元到第2個字元(不包括第2個字元)

 https://docs.python.org/3/tutorial/introduction.html#strings >>> word = 'Python' >>> word[0] # character in position 0 'P'

什麽元素設置margin-top會作用在父元素上?

school overflow blank pad over lan 子元素 sch div 原因在於:CSS 外邊距合並 復現: <!DOCTYPE html> <html lang="en"> <head> <meta

JavaScript刪除所有元素

    var div = document.getElementById("div1");     while(div.hasChildNodes()) //當div下還存在子節點時 迴圈繼續     {