mongodb修改数据

修改数据

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,不会再插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值