一、update()命令
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.app.update({"downlaod_count":2},{$set:{"name":"OK"}},false,true);
db.app.update({"download_count":{$gt:1}},{$set:{"name":"OK"}}); 只更新了第一条记录
db.app.update({"download_count":{$gte:3}},{$set:{"name":"OK"}},false,true ); 全更新了
db.app.update({"download_count":{$lt:4}},{$set:{"name":"OK"}},true,false ); 只加进去了第一条
db.app.update({"download_count":{$lte:5}},{$set:{"name":"OK"}},true,true ); 全加进去了
db.app.update({"download_count":{$in:[1,2,3]}},{$inc:{"download_count":1}},false,true );全更新了
db.app.update({"download_count":{$nin:[1,2,3]}},{$inc:{"download_count":1}},false,false );只更新了第一条
二、mongodb的更新操作符:
1) $inc
用法:{ $inc:{field:value}} 对一个数字字段field增加value
db.app.update({"id":15},{$inc:{"download_count":1}});
db.app.update({"id":15},{$inc:{"download_count":-1}});
2) $set
用法:{ $set:{field:value}} 相当于sql的set field = value,全部数据类型都支持$set
db.app.update({"id":15},{$set:{"test1":"testv1","name":"testv2","test3":"testv3","test4":"testv4"}});
3) $unset
用法:{ $unset:{field:1}} 删除字段了
db.app.update({"id":15},{$unset:{"test1":1}});
4) $push
用法:{ $push:{field:value}}
把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去
db.app.update({"id":15},{$set:{"test1":["aaa","bbb"]}});
db.app.update({"id":15},{$push:{"test1": "ccc"}});
db.app.update({"id":15},{$push:{"name": "ccc"}});
db.app.update({"id":15},{$push:{"test1": ["ddd","eee"]}});
5) $pushAll
用法:{ $pushAll:{field:value_array}}
同$push,只是一次可以追加多个值到一个数组字段内
db.app.update({"id":15},{$pushAll:{"test1": ["fff","ggg"]}});
6) $addToSet
用法:{ $addToSet:{field:value}}
增加一个值到数组内,而且只有当这个值不在数组内才增加。例:
db.app.update({"id":15},{$addToSet:{"test1": {$each:["444","555"]}}});
db.app.update({"id":15},{$addToSet:{"test1": ["444","555"]}});
7) $pop
用法:
删除最后一个值:{ $pop:{field:1}}删除第一个值:{ $pop:{field:-1}}
注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用,例:
8) $pull
用法:$pull:{field:value}}
从数组field内删除一个等于value值。例:
> db.app.update({"id":15},{$pull:{"test1": "ggg"}});
9) $pullAll
用法:{ $pullAll:{field:value_array}}
同$pull,可以一次删除数组内的多个值
db.app.update({"id":15},{$pullAll:{"test1": [ "ccc","fff" ]}});
9) $rename
用法:{ $rename:{field:new_filed}}
重命名字段
db.app.update({"id":15},{$rename:{"test1":"bat" }});