learn MongoDB (二) 經常使用修改器

$inc

$inc修改器用於增長字段的數值,若是沒有該字段,則建立該字段並設置爲$inc對應的值。示例以下:javascript

//before $inc  
//example one: {name:"王二", age: 3}
//example two: {name:"王二"}
db.users.update({name:'王二'}, {'$inc':{'age':1})
//example one: {name:"王二", age: 4}
//example two: {name:"王二", age: 1}

$set

$set用於指定一個字段的值,若是該字段不存在,則建立它。java

db.users.update({name:"王二"}, {$set:{age:23}})
修改內嵌文檔

能夠經過點鏈接符修改深層嵌套的屬性數組

db.users.insert({'name':"王二", auth:{nickname:'哈哈'}})
db.users.update({'name':'王二'}, {$set:{"auth.nickname": "嘻嘻"}})

$unset

用於刪除一個字段。post

db.users.update({name:'王二', {$unset:{"age": 1}}})

數組修改器

$push

$push修改器用於在已有的數組末尾添加一個元素,若是沒有就建立一個新的數組。url

添加一條數據到數組中
db.blog.posts.update({name:"yudong"}, {"$push":{"comments":{"name":"huasheng", "content":"nice article"}}})
//做用是將{"name":"huasheng", "content":"nice article"} push到commnets數組中
添加多條數據到數組中

須要用到 $each 子操做符來添加多條數據code

db.stock.ticker.update({"name":"華生"}, {"$push": {"hourly":{"$each": [123,323, 320.3]}}})
添加多條數據到數組中並限制數組的總長度

須要用到 eachslice 操做符blog

db.stock.ticker.update({"name":"華生"}, {"$push": {"hourly":{"$each": [123,323, 320.3],"$slice": -10}}})
//數組最多包含最後添加的10個元素 $slice的值必須是負數

$addToSet

能夠經過$addToSet將數組做爲數據集合使用,保證數組內的元素不會重複。隊列

添加單條數據
db.users.update({name:'wangshang'}, {"$addToSet":{emails:"wwwwqqqqqq@163.com"}})
添加多條數據
db.users.update({name:"wangshang", {"$addToSet":{"emails":{"$each":["www@163.com","huashan@qq.com"]}}})

$pop

$pop修改器將數據當作隊列或者棧,能夠從數組任何一端刪除元素ip

// 從數組key的末尾刪除元素
db.list.update({name:"wangao"}, {"$pop":{"key":1}})
// 從數組key的頭部刪除元素
db.list.update({name:"wangao"}, {"$pop":{"key":-1}})

$pull

基於特定條件來刪除數據集合中的元素,會刪除全部匹配到的元素文檔

db.list.insert({"todo": ["dishes","laundry", {"id": 1}]})
db.list.update({}, {"$pull": {"todo": "laundry"}})
//根據深層嵌套內容刪除元素
db.list.update({}, {"$pull": {"todo": {"id": 1}}})
相關文章
相關標籤/搜索