mongoDB之update()操作
1、update()命令基本使用,( 默认只是更新一条符合查询条件的信息 默认情况下不存在不添加)
注意 单纯的使用db.user.update({"name":"user6"},{name:"user111"},0,1) 的情况下 会把符合查询条件{"namne":"user6"}的记录替换为一个新的字段信息 而应该使用$set,$inc等更新记录。
db.collection.update( criteria, objNew, upsert, multi ) //criteria : update的查询条件,类似sql update查询内where后面的 //objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 //upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 //multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
事例:
db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); //只更新了第一条记录 db.test0.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); //全更新了 db.test0.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); //只加进去了第一条 db.test0.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); //全加进去了 db.test0.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );//全更新了 db.test0.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );//只更新了第一
$inc使用 {$inc:{"name":xx}} xx为整数表示递增 xx为负数表示递减 ,当字段不存在的时候会添加字段。
> db.user.find() { "_id" : ObjectId("54feead226be41dca9db0d24"), "name" : "wangping", "age" : 25, "sex" : "woman", "location" : { "city" : "beijing", "road" : "zhongguonongyedaxue" } } { "_id" : ObjectId("54feef3626be41dca9db0d25"), "name" : "gaofei", "age" : 24, "grade" : [ 1, 2, 5, 6 ], "location" : { "province" : "shandong", "city" : "jiyang", "road" : "zuozhuangzhen" } } > db.user.update({},{$inc:{"age":10}},0,1) //年龄全部递增10岁 WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > db.user.find() { "_id" : ObjectId("54feead226be41dca9db0d24"), "name" : "wangping", "age" : 35, "sex" : "woman", "location" : { "city" : "beijing", "road" : "zhongguonongyedaxue" } } { "_id" : ObjectId("54feef3626be41dca9db0d25"), "name" : "gaofei", "age" : 34, "grade" : [ 1, 2, 5, 6 ], "location" : { "province" : "shandong", "city" : "jiyang", "road" : "zuozhuangzhen" } } >
2、$unset 使用 表示删除某个字段。
db.user.update({"name":"zhaoxingzhuang"},{$unset:{age:1},0,1}) //表示把符合条件的数据的age字段删除掉。
3、$push {$push:{arr:4}} $pushAll {$pushAll:{arr:[4,6,7]}} 如果字段不存在也会添加数组数据 只是针对数组操作
> db.user.find() { "_id" : ObjectId("54feead226be41dca9db0d24"), "name" : "wangping", "age" : 35, "sex" : "woman", "location" : { "city" : "beijing", "road" : "zhongguonongyedaxue" } } { "_id" : ObjectId("54feef3626be41dca9db0d25"), "name" : "gaofei", "age" : 34, "grade" : [ 1, 2, 5, 6 ], "location" : { "province" : "shandong", "city" : "jiyang", "road" : "zuozhuangzhen" } } > db.user.update({},{$push:{grade:4}},0,1) //向grade数组中添加4 字段不存在的也会添加 WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > db.user.find() { "_id" : ObjectId("54feead226be41dca9db0d24"), "name" : "wangping", "age" : 35, "sex" : "woman", "location" : { "city" : "beijing", "road" : "zhongguonongyedaxue" }, "grade" : [ 4 ] } { "_id" : ObjectId("54feef3626be41dca9db0d25"), "name" : "gaofei", "age" : 34, "grade" : [ 1, 2, 5, 6, 4 ], "location" : { "province" : "shandong", "city" : "jiyang", "road" : "zuozhuangzhen" } } >
4、$pop 删除数组中的数值 db.a.update({"name":"zhuang"},{$pop:{arr:1}}) //表示从前边删除 arr:-1表示从后边 ,不能删除多条 注意这里的前后顺序 可以理解为数组是栈的形式实现
> db.user.find({name:"gaofei"}) { "_id" : ObjectId("54feef3626be41dca9db0d25"), "name" : "gaofei", "age" : 34, "grade" : [ 1, 2, 5, 6, 4 ], "location" : { "province" : "shandong", "city" : "jiyang", "road" : "zuozhuangzhen" } } > db.user.update({"name":"gaofei"},{$pop:{grade:1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find({name:"gaofei"}) { "_id" : ObjectId("54feef3626be41dca9db0d25"), "name" : "gaofei", "age" : 34, "grade" : [ 1, 2, 5, 6 ], "location" : { "province" : "shandong", "city" : "jiyang"
5、$addToSet
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。