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。排除迴圈執行一條一條更新。