mongodb 学习笔记 2 --- 修改器
修改器是為了愛update文檔時,不需要傳入整個文檔就能修改當前文檔的某個屬性值,修改器用法如下:
假設數據庫中foo集合中存在如下文檔:{"name":"jack","age":18}
db.foo.update({"name":"jack"},{"$inc":{"age":2}});? //這是一個修改器用法舉例
則更新后的文檔變為:{"name":"jack","age":20}
下面將介紹如下修改器:
1.$set : 用來指定一個字段的值,如果該字段不存在則創建它。修改內嵌文檔時支持 {"$set":{"author.name":"jack"}}的寫法,即使author字段不存在也可以;
2.$unset: 用來刪除一個字段,使用方法如下:db.foo.update({"name":"jack"},{"$unset":{"age":0}})? ?不管unset的鍵值對中值為false 還是為0、null,只要寫了就會刪除;
3.$inc:用來增加/減少已有鍵值,如果該鍵不存在就創建一個;只能增加數字值。數字值的字符串也不行。相應的減少傳負值就可以了;
4.$push: 用來向數組中push一條數據,如果該數組不存在則創建。
? ? ? ? ? ? ?子操作符:?$each 子操作符配合使用,如 {"$push":{"list":{"$each":[1,2,3]}}} , push后的數據為:{"list":[1,2,3]}? ?如果不用$each,則變為?{"list":[[1,2,3]]}?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$slice? 限制push數組的長度,負數從后往前數,正數從前往后數,如{"$push":{"list":{"$each":[1,2,3],"$slice":-2}}},數據變為?{"list":[2,3]} 。 如原有數據{"list":[[1,2,3]]} ,此時{"$push":{"list":{"$each":[4,5,6],"$slice":-2}}},變為{"list":[[5,6]]},可見數據的截取范圍是根據整體數據數組而言的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$sort? ?根據排序規則進行數組排序,-1 為降序,1為升序
? ? ? ? ? ? 以上的$slice 和 $sort必須和$push $each共同使用?
5.$ne : not equal ,在篩選條件時表示屬性值不等于、或不包含該值,可用于update及find? 如 db.foo.find({"list":{"$ne":2}})?
6.$addToSet: 在向數組中push值時可以避免重復,用法和$push 相同,不過子操作符只能用$each
7.$pop: 從數組中刪除一個元素,?{"$pop":{"list":1}}? 從后往前刪除,?{"$pop":{"list":-1}} 從前往后刪除? 無論list后面這個值傳的幾,都只刪除1個
8.$pull: 從數組中刪除指定的值?{"$pull":{"list":2}}? 如果里面的相同的值有多個,則都刪除
9.$:數組下標占位符,使用方法:比如元數據為 {comments:[{name:"jim",votes:0},{name:'mary',votes:1}]}? 進行如下更新操作:db.foo.update({"comments.name":"mary"},{"$set":{"commnets.$.votes":3}})? 如匹配條件有多個,只更新第一個
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/JhoneLee/p/9199372.html
總結
以上是生活随笔為你收集整理的mongodb 学习笔记 2 --- 修改器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7777端口的问题
- 下一篇: 推荐: 五分钟搞懂Xen、KVM、Qem