1. 程式人生 > >java操作mongodb之update

java操作mongodb之update

一:環境搭建

                    環境搭建程式碼(SSM+mongdb)點選開啟連結

二:根據_id跟新collection中存在的欄位。

    1,寫法

            

_id,及值是存在的。field   orderDate也是存在的。

2,test


3,結果


三:根據_id更新collection中不存在的field

1,寫法

    

2,結果


使用mongoTemplate.upsert()完成,filed不存在,則新增上去。


結果:


四:更新多條資料(並不是更新多個document,而是滿足條件的更新)對比SQL批量更新。

        對滿足條件的都進行更新。

        1,寫法

                

        2,測試前

            

        3,測試後

    

驗證了執行邏輯。

五,驗證mongoTemplate.updateFirst()執行邏輯。

        1,寫法

    

    2,測試前


3,測試後


4,滿足邏輯。當滿足條件的document有多個的時候,只更新其中一條。

六:驗證inc(累加)

        1,字串情況

         寫法

                

        測試前


        測試後


說明inc對字串是不能進行+的,而且程式沒有報錯,也沒有拋異常,反正就像什麼都沒有發生一樣。

    2,數字情況

        寫法


    測試前


    測試後


驗證邏輯。

七,驗證rename(重新命名Key)

        寫法


        測試前


        測試後


八,驗證unset(移除key)

    寫法


測試前


測試後


九:嵌入文件

    寫法


    測試前


測試後


十:修改嵌入的文件

    寫法


    測試前


    測試後


十一:刪除嵌入的文件

    寫法


    測試前


    測試後


十二:再次嵌入文件(內容跟第一次嵌入文件一樣)

    寫法


測試前


    測試後


十三:再次刪除文件

    寫法


    測試前


    測試後


    沒有任何變化。

    修改寫法


    測試結果


對比update.pull()於update.unset()。從結果就可以看出,unset只刪除value並留下一個null。而pull()刪除value後未留下null.但是pull中的物件跟資料庫中的物件一致,在資料內容上完全一致,有一點不一樣,則無法刪除。

十四,批量更新document。這裡更新後的結果是不一樣的,比如第一條資料的,orderCode更新為1003;第二條資料的orderCode更新為1004;第三條的orderCode跟新為1005。排除迴圈執行一條一條更新。