$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用于指定一个字段的值,若是该字段不存在,则建立它。java
db.users.update({name:"王二"}, {$set:{age:23}})
能够经过点链接符修改深层嵌套的属性数组
db.users.insert({'name':"王二", auth:{nickname:'哈哈'}}) db.users.update({'name':'王二'}, {$set:{"auth.nickname": "嘻嘻"}})
用于删除一个字段。post
db.users.update({name:'王二', {$unset:{"age": 1}}})
$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]}}})
须要用到 each
和 slice
操做符blog
db.stock.ticker.update({"name":"华生"}, {"$push": {"hourly":{"$each": [123,323, 320.3],"$slice": -10}}}) //数组最多包含最后添加的10个元素 $slice的值必须是负数
能够经过$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修改器将数据当作队列或者栈,能够从数组任何一端删除元素ip
// 从数组key的末尾删除元素 db.list.update({name:"wangao"}, {"$pop":{"key":1}}) // 从数组key的头部删除元素 db.list.update({name:"wangao"}, {"$pop":{"key":-1}})
基于特定条件来删除数据集合中的元素,会删除全部匹配到的元素文档
db.list.insert({"todo": ["dishes","laundry", {"id": 1}]}) db.list.update({}, {"$pull": {"todo": "laundry"}}) //根据深层嵌套内容删除元素 db.list.update({}, {"$pull": {"todo": {"id": 1}}})