mongodb修改器(转)
MongoDB 修改器
对文档中的某些字段进行更新
$inc
专门用来增加(或减少)数字的,只能用于整数,长整数或双精度浮点型的值$inc键的值必须为数字,不能使用字符串,数组或其他非数字的值
如果键不存在,则创建它
| 1 | db.user.update({}, {"$inc":{"age":1}}); | 
$set
用来指定一个字段的值, 字段不存在则创建.
| 1 | db.user.update({},{"$set":{"name":"mike"}}) | 
$set 也可以用于改变键的类型
| 1 | db.user.update({}, {"$set":{"name":["mike","wang"]}}) | 
unset
用于删除一个键
| 1 | db.user.update({},{"$unset":{"age":1}}) | 
数组修改器
$push
如果数组已存在,添加元素到数组末尾,否则创建它
| 1 | db.blog.update({}, {"$push":{"authors":"mike"}}) | 
使用$each 添加多个值
| 1 | db.blog.update({},{"$push":{"authors":{"$each":["mike", "wang"]}}}) | 
限制数组的最大长度 ‘$slice’, 只包含最后加入的限制长度的元素,必须为负整数,$slice相对于在文档中创建了一个队列
| 1 | db.blog.update( | 
$sort 对数组中的所有对象进行排序
| 1 | db.blog.update( | 
$slice, $sort 必须配合 $each 与 $push使用
$addToSet
保证数组中的元素不重复
| 1 | db.user.update({},{"$addToSet":{"name":"mike"}}) | 
与$each组合添加多个元素
| 1 | db.user.update({},{"$addToSet":{"name":{"$each":["mike", "wang"]}}}) | 
$pop
从数组中删除元素,此时数组相当于队列或栈,只能从一端删除
| 1 | // 从头部删除 | 
$pull
删除所有匹配的文档
| 1 | db.user.update({},{"pull":{"name": "mike"}}) | 
数组操作符必须作用于包含数组值的键
基于位置的数组修改器
数组下标(从0开始)
| 1 | db.blog.update({}, {"set":{"comments.0.name": "mike"}) | 
## 定位操作符 $
| 1 | db.blog.update( | 
定位操作符只更新第一个匹配的元素
upsert
如果没有找到匹配的文档,那么以查询条件和更新文档为基础创建新的文档;找到则正常更新update的第三个参数表示这是个upsert
| 1 | db.user.update( | 
setOnInsert
在创建文档时创建字段并赋值, 在更新的时候不做任何改变
| 1 | db.user.update( | 
更新多个文档, 指定update的第四个参数为 true
findAndModify 返回被更新的文档
| 1 | db.user.findAndModify({ | 
update 和 remove 有且只有一个, 能与findAndModify 一起使用的字段有:
- query
 查询文档的条件
- sort
 排序的条件
- update
 文档更新
- remove
 删除文档,布尔类型
- new
 表示返回更新前还是更新后的文档,布尔类型,默认false, 更新前的文档
- fields
 文档中需要返回的字段
- upsert
 true为upsert, 默认false
转自http://wangming1993.github.io/2015/12/15/mongo-modifier/
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号