修改数据
db.collectionName.update(query,update,upsert,multi)
功能:修改一个文档
参数:query:筛选要修改的文档 相当于where子句,用法同查找
update:将数据更新为什么内容相当于set操作,需要使用修改器操作符
upsert:bool值,默认为false,表示如果query的文档不存在则无法修改
如果设置为true表示如果query的文档不存在则根据query和update参数插入新的文档
multi:bool值,默认false 如果有多条符合筛选条件的文档,则只修改第一条,
如果设置为true则修改所有符合条件的文档
例子:将阿红年龄改为24
db.class0.update({name:'阿红'},{$set:{age:24}})
例子:不存在name:‘阿丽’,这个文档,会插入这条文档
db.class0.update({name:'阿丽'},{$set:{age:18,sex:'w'}},true)
例子:将所有年龄大于20的改为18,但是第四个参数为false,所以只修改了第一条
db.class0.update({age:{$gt:20}},{$set:{age:18}})
例子:将所有年龄大于20的改为18
db.class0.update({age:{$gt:20}},{$set:{age:18}},false,true)
修改器操作符
$set
修改一个域的值
增加一个域
db.class0.update({name:'阿红'},{$set:{sex:'w'}})
$unset
删除一个域
例子:将阿丽的性别和年龄删掉,(后面数字习惯写1或者0,写其他数字也可以,都表示删除)
db.class0.update({name:'阿丽'},{$unset:{sex:0,age:0}})
$rename
修改一个域的名称
例子:修改所有的sex域为gender
db.class0.update({},{$rename:{sex:'gender'}},false,true)
$setOnInsert
如果update操作插入新的文档,则补充插入内容
例子:如果插入数据则同时插入sex和tel域内容
db.class0.update({name:'阿华'},{$set:{age:21},$setOnInsert:{sex:'m',tel:'12222345'}},true)
$inc
加减修改器
例子:将所有年纪小于18岁的加1
db.class0.update({age:{$lt:18}},{$inc:{age:1}},false,true)
*inc 可加正数 负数 小数都可以
$mul
乘法修改器
例子:将阿华的年龄乘以2
db.class0.update({name:'阿华'},{$mul:{age:2}})
*$mul 可乘以正数 负数 小数都可以
$min
设定最小值 : 如果筛选的文档指定的域值小于min值则不修改,如果大于min值则改为min值
e.g.
db.class0.update({},{$min:{age:19}},false,true)
$max
设置最大值 : 如果筛选的文档指定至于大于max值则不变,如果小于max值则修改为max值
e.g.
db.class0.update({},{$max:{age:20}},false,true)
数组修改器
$push 向数组中添加一项
e.g.
db.class1.update({name:"Abby"},{$push:{score:30}})
$pushAll 向数组中添加多项
e.g.
db.class1.update({name:"Jame"},{$pushAll:{score:[10,20]}})
$each 逐个操作
例子:利用each添加多项
db.class1.update({name:'Lily'},{$push:{score:{$each:[10,5]}}})
$position
选择数组位置进行操作,必须和each合用
例子:
db.class1.update({name:'Lucy'},{$push:{score:{$each:[10,10],$position:1}}})
$sort
对数组进行排序,必须和each合用
db.class1.update({name:'Lucy'},{$push:{score:{$each:[],$sort:1}}})
$pull 从数组中删除一个元素
例子:删除Lily的5分
db.class1.update({name:'Lily'},{$pull:{score:5}})
$pullAll
从数组中删除多个元素
db.class1.update({name:'Jame'},{$pullAll:{score:[10,20]}})
$pop
弹出数组中的一项(只能弹出第一项或者最后一项)
-1表示第一项,1表示最后一项
例子:
db.class1.update({name:'Lily'},{$pop:{score:-1}})
$addToset
向数组中插入一个元素,但该元素不能和其他元素重复
db.class1.update({name:'Lily'},{$addToSet:{score:45}})
数组中已经有45,不会再插入