mongodb基礎知識 修改欄位名稱

2021-09-02 16:57:58 字數 1107 閱讀 6027

最近兩天,由於mongo驅動版本的問題,導致系統不相容,填了幾天坑,終於填完了,但是並沒有熊根本上解決問題。後面決定要進行一次大重構,增加乙個dao層,後台的mvc架構,以前覺得dao和service的很多任務作重複,經過這個以後,才發現dao層確實很有必要,不過service和dao層的資料交換格式千萬不要用mongo驅動自帶的,mongo2.x以前用的是dbobject, 3.x以後又寫了乙個document,當然3.x還是可以用dbobject,並且也提供了轉換為document'的方法,但是這並不是官方的推薦形式,這只能怪mongo官方一開始沒有確定好資料交換的型別,所以最好在service和dao之間的資料交換使用jdk自帶的類或者我們自己建立的類,最好不要用第三方的類來作為資料交換格式。

如果遇到資料底庫層切換,只需要更改dao層,從新寫乙個就行了,其他所有的業務層都不需要更改,我就是因為之前懶得寫dao,直接在service層操作mongo,導致mongo切換時修改很多的service實現。

最後說說最近用到的乙個mongo操作,網上搜了一下,找到了解決方案。其實要實現的功能就是把字段改名,我一開始沒有注意到官方文件中乙個操作符可以實現這個功能,就自己來修改,簡單暴力,先把原來欄位的值,設定到新字段,然後刪除原來的字段,結果看到官方$rename說明時,內部也是差不過這個實現方式。

1.把乙個欄位的值複製到乙個新字段上:

// 第三個引數false表示文件不存在是否新增, 預設false

// 第四個引數true表示是否更新滿足條件的所有文件, 預設false

db.coll_name.find({}).foreach(

function(doc) , }, false, true);

});//

2.刪除字段

// 刪除欄位的語法是

}// 比如刪除乙個name欄位

db.coll_name.update(, }, false, false);

db.coll_name.update(, }, false, false);

// 這兩種方式都是可以得,就是說要刪除的字段你設定值不會影響刪除欄位的操作

3.修改欄位名

db.coll_name.update({}, }, false, true);

MongoDB使用學習(一) 基礎知識

學習了mysql之後,出於興趣決定學習一下nosql資料庫的使用,在nosql資料庫之中mongodb算是比較知名的了。與關係型資料庫相比,mongodb中資料的核心概念不再是表中的記錄,而是鍵值對構成的文件,有點類似於python中的字典的資料結構。如。文件就是鍵值對的乙個有序集與關係型資料庫相比...

mongodb基礎知識 內嵌陣列相關

前面看到mongodb文件的字段的值可以巢狀乙個文件,當然欄位的值也可以巢狀乙個陣列。不過巢狀陣列就比巢狀文件稍微複雜一些,因為陣列既可以是基本資料型別的陣列,也可以是文件型別的陣列。為了邏輯的順暢,先從巢狀基本資料型別的陣列開始,然後過度到巢狀文件的陣列。基本資料的陣列 1.精確匹配 陣列中值完全...

mongodb為集合新增字段 刪除字段 修改字段

mongodb為集合新增字段 刪除字段 修改字段 新增字段 為atest集合新增乙個欄位content db.atest.update 刪除uname欄位 db.atest.update false,true 修改字段,把content改為mcontent db.atest.update false...