日期:2014-05-16  浏览次数:22750 次

MongoDB学习整理之更新

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" :