MongoDB学习整理之更新
MongoDB学习整理之更新
Mongodb更新有两个命令:一个是update,另一个是save
update命令:
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
1)criteria:查询条件,类似于update语句内where后面的内容
2)objNew:update的对象和一些更新的操作符(如$、$inc等),也可以理解为关系型数据库update语句内set后面的内容 www.zzzyk.com
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" : "OK2" }
{ "test5" : "OK" }
www.zzzyk.com
save命令:
db.collection.save(obj)
obj:要更新的纪录,只能试单挑纪录,如果collection没有存在与obj一样的id,则添加一条记录,否则更新
数据更新操作符
1)$inc
用法:{$inc:{field:value}},对一个数字字段的某个field增加value
更新前:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 30 }
操作:db.t3.update({name:"liangzhangping"},{$inc:{age:5}})
更新后:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 35 }
2)$set
用法:{$set:{field:value}},类似于SQL语法中“set field=value”
更新前:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 30 }
操作:db.t3.update({name:"liangzhangping"},{$set:{age:28}})
更新后:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 28 }
3)$unset
用法:{$unset:{field:1}},删除字段,类似于SQL语法中删除列
更新前:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 30 }
操作:db.t3.update({name:"liangzhangping"},{$unset:{age:1}})
更新后:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping" }
4)$push
用法:{$push:{field:value}},把value追加到field里。field一定是数组类型,如果field不存在,会新增一个
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "userid" : 3, "name" : [ "liangzhangping", "lzp" ] }
操作:db.t3.update({"userid":3},{$push:{name:"xiaoping"}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping" ], "userid" : 3 }
5)$pushAll
用法:{$push:{field:value_array}},用法同$push一样,只是$pushAll一次可以追加多个值到一个数组字段内
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping" ], "userid" : 3 }
操作:db.t3.update({"userid":3},{$pushAll:{name:["N1","N2"]}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name&qu
- 更多DB2疑问解答:
- sql语句 从DB2移动到其他数据库
- DB2 character类型更新报错
- db2 怎么查看执行的sql语句需要多少系统临时表空间?
- db2数据库的table表里,一money字段中的数据显示为:56000,00 本人想要用sql语句将它修改为56,000,000
- DB2导出表结构,能不能只导出指定的表结构。求大神指教,给出命令哈
- DB2数据库,增加数据表空间容量需要重启数据库吗?
- cognos连接db2,为什么启动不了服务啊, 连接Oracle可以启动服务。。
- PostgreSQL对比DB2
- db2如何查看编写好的存储过程?
- db2数值截取
- 谁知道关于DB2怎么看系统日志,归档日志的位置。并且怎么修改日志呢?
- db2怎样重组表结构?
- 求一本【牛新庄的DB2运维教程】?
- db2 的 SECADM权限 是干什么的
- DB2怎么删除表空间所以数据