mongodb筆記——更新

mongodb筆記——查詢

本文爲mongodb關於更新操作的知識點,查詢的請查看上方鏈接。

以下舉例操作集合爲以下格式

student集合(不要太在意這表的設計,只是爲方便舉例而已)

_id name age sex score books
123 張三 20 man [{name:"語文",score:90},{name:"英語",score:90},{name:"數學",score:90}] ["java","OC","js","mongodb"]

1、簡單更新

更新在mongodb中使用update(query, obj, upsert, multi)函數,接受四個參數,第一個爲查詢條件,第二個爲更新內容,第三個爲true時表示查詢不存在則插入,默認爲false,第三個爲true時表示更新多條數據,默認爲false,即只更新查詢到的第一條。
例:
//更新張三的age爲21
db.student.update({name:"張三"},{age:21});//整條記錄只剩下age一個字段,正確方式見下條語句

db.student.update({name:"張三"},{$set:{age:21}});

//更新李四的age爲21,如不存在該記錄這插入
db.student.update({name:"李四"},{$set:{name:"李四",age:21}},true);

//將所有sex爲man的記錄的age更新爲19
db.student.update({sex:"man"},{$set:{age:19}},false,true)

注意例子中的第一條語句會覆蓋原數據,即update後該條數據爲你update的內容是什麼就是什麼,你沒update的屬性將會全部抹掉。要加入$set操作符纔可只更新指定的字段。個人對於update函數中的upsert很喜歡,不用像sql需要自己先查一下有沒有該記錄有才執行更新,沒有則執行插入。

2、更新數組的值

對於數組的刪除增加值對應有刪除數組中指定的下標$pop,刪除數組中值匹配$pull,刪除數組中所有匹配的$pullAll,定位$,插入值$addToSet,$addToSet和$each組合使用插入多條數據。
例子:
//刪除張三的第一本書
db.student.update({name:"張三"},{$pop:{books,1}});//-1爲最後個

//刪除張三mongodb這本書
db.student.update({name:"張三"},{$pull:{books,"mongodb"}});

//刪除張三mongodb和java這本書
db.student.update({name:"張三"},{$pullAll:{books,["mongodb","java"]}});

//定位$,$表示位置,比如修改張三第二科目的成績爲100
db.student.update({name:"張三"},{"score.1.score":100})

//爲張三添加nodejs這本書
db.student.update({name:"張三"},{$addToSet:{books:"nodejs"}})

//$addToSet和$each的組合使用,插入多個值,爲張三添加nodejs和SpringMVC兩本書
db.student.update({name:"張三"},{$addToSet:{books:{$each:["nodejs","SpringMVC"]}}})

3、刪除字段

使用$unset操作符,這沒什麼好說的,上個例子
//刪除表的books字段
db.student.update({},{$unset:{"books":""}},false,true)





to be continued。。。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章