mongodb修改数据语句_MongoDB db.collection.update() - 修改集合中的数据

db.collection.update() - 修改集合中的数据

MongoDB有两个更新方法,一个是db.collection.update(),另一个更新命令是db.collection.save()。

用法

db.collection.update(criteria,objNew,upsert,multi)

参数

参数

描述

criteria

查询条件,类似关系型数据库的update语句内where后面的内容。

objNew

update的对象和一些更新的操作符(如$、$inc等),也可以理解为关系型数据库update语句内set后面的内容。

upsert

如果不存在update的记录,是否插入objNew这个新的document。true为插入,默认是false,不插入。

multi

默认是false,只更新找到的第一条记录。如果为true,按条件查出来的多条记录全部更新。

示例

先准备一些数据,如下面的代码所示:

>db.t1.insert({count:2,test2:"t12"})

>db.t1.insert({count:3,test2:"t12"})

>db.t1.find()

{"_id":ObjectId("4fe644d029735e5cd428fa76"),"count":2,"test2":"t12"}

{"_id":ObjectId("4fe644d029735e5cd428fa77"),"count":3,"test2":"t12"}

实验1 如下面的代码所示:

>db.t1.update({"count":{$gt:1}},{$set:{"test2":"OK1"}})

>db.t1.find()

{"_id":ObjectId("4fe644d029735e5cd428fa76"),"count":2,"test2":"OK1"}

{"_id":ObjectId("4fe644d029735e5cd428fa77"),"count":3,"test2":"t12"}

在本例中由于没有指定"upsert"和"multi"的值,这两个值都保持默认值false,所以即使找不到查询的记录也不会插入一条新数据;同时,即使查到多条记录也只会更新第一条记录。通过本实验可以看到,只有第一条记录被修改了。

实验2 如下面的代码所示:

>db.t1.update({"count":{$gt:1}},{$set:{"test2":"OK2"}},false,true)

>db.t1.find()

{"_id":ObjectId("4fe644d029735e5cd428fa76"),"count":2,"test2":"OK2"}

{"_id":ObjectId("4fe644d029735e5cd428fa77"),"count":3,"test2":"OK2"}

在本例中由于指定了"multi"为true,所以如果查到多条记录,就会批量更新。通过本实验可以看到,符合条件的所有记录都被修改了。

实验3 如下面的代码所示:

>db.t1.update({"count":{$gt:4}},{$set:{"test5":"OK"}},true,false)

>db.t1.find()

{"_id":ObjectId("4fe644d029735e5cd428fa76"),"count":2,"test2":"OK2"}

{"_id":ObjectId("4fe644d029735e5cd428fa77"),"count":3,"test2":"OK2"}

{"_id":ObjectId("4fe647f8bea23d1d88500a07"),"test5":"OK"}

在本例中由于指定了"upsert"为true,所以如果查不到要更新的记录,就会插入一条新的记录。通过本实验可以看到,由于找不到"count"大于4的记录,所以插入了一条新记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值