日期:2014-05-16 浏览次数:22789 次
Mongodb更新有两个命令:一个是update,另一个是save
update命令:
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
1)criteria:查询条件,类似于update语句内where后面的内容
2)objNew:update的对象和一些更新的操作符(如$、$inc等),也可以理解为关系型数据库update语句内set后面的内容
3)upsert:如果不存在update的纪录,是否插入objNew这个新的document。true为插入,默认是false,不插入
4)multi:默认是false,只更新找到的第一条纪录,如果为true,按条件查出来的多条纪录全部更新。
测试:
1)准备数据:
{ "_id" : ObjectId("4fe0595216c38fae7549540f"), "count" : 2, "test2" : "t12" }
{ "_id" : ObjectId("4fe0595816c38fae75495410"), "count" : 3, "test2" : "t12" }
2)测试更新count > 1 的纪录的test2的值为OK1,没有加入multi值
db.t1.update({"count":{$gt:1}},{$set:{"test2":"OK1"}})
更新后
{ "_id" : ObjectId("4fe0595216c38fae7549540f"), "count" : 2, "test2" : "OK1" }
{ "_id" : ObjectId("4fe0595816c38fae75495410"), "count" : 3, "test2" : "t12" }
只更新了一条数据,是因为multi默认值都是false
3)测试更新count > 1 的纪录的test2的值为OK2,加入multi
db.t1.update({"count":{$gt:1}},{$set:{"test2":"OK2"}},false,true)
更新后
{ "_id" : ObjectId("4fe0595216c38fae7549540f"), "count" : 2, "test2" : "OK2" }
{ "_id" : ObjectId("4fe0595816c38fae75495410"), "count" : 3, "test2" : "OK2" }
4)测试更新count > 4 的纪录的test2的值为OK, upsert:true
db.t1.update({"count":{$gt:5}},{$set:{"test5":"OK"}},true,false)
更新后
{ "_id" : ObjectId("4fe0595216c38fae7549540f"), "count" : 2, "test2" : "OK2" }
{ "_id" : ObjectId("4fe0595816c38fae75495410"), "count" : 3, "test2" :