MongoDB常用命令及例子详细介绍(三)(二)

2015-01-21 11:32:22 · 作者: · 浏览: 21
set,批量更新 db.c1.update({name:"user6"},{$set:{name:"user66"}},0,1); --将所有的name=user6的全部更新user66 2):$set 增加字段,或批量修改字段值(存在则更新,不存在则增加) db.c1.update({name:"user6"},{$set:{name:"user66"}},0,1); --批量修改name值 db.c1.update({name:"user10"},{$set:{age:10}},0,1); --将name=user1的全部加上 age字段,且值=10 3):$inc -->increment自增的意思,如果字段有则加减(自己定),没有则新增 场景:现在在大促了,想给没给会员赠送5个积分,但是:积分字段有的会员没有有的有的情况 现在想没有积分字段的会员也得加5分,$inc就能做到 db.c1.insert({name:"leyangjun",age:23,score:11}); db.c1.insert({name:"leyangjun",age:23,score:1}); db.c1.insert({name:"leyangjun",age:23}); --加积分 db.c1.update({},{$inc:score:10},0,1); --{}表示所有用户,都加10个积分,没有score字段的,$inc会统一加上 db.c1.update({name:"user1"},{$inc:score:10}); 加减都行 db.c1.update({name:"user1"},{$inc:score:-10}); *set 和 $inc 都可以增加字段,但是$inc增加必须是整型 4):$unset 删除字段(自带的_id字段是删不鸟的) db.c5.update({},{$unset:{score:1},0,1); --1表示true,将所有记录中的score字段删掉 db.c5.update({},{$unset:{score:1,age:1},0,1); --删除多个 5):$push 针对数组增加元素(更新的魔术方法一般在字段的外侧,查询是在内侧) db.c3.insert({name:"user1",arr:[1,2,3]}); db.c3.update({name:"user1"},{$push:{arr:4}}); --name=user1的arr增加元素,记住不能同时插入多个(可以压数组,就是不能同时压入多个值) 6):$pop 将字段里的最后元素移除,针对数组 db.c3.update({name:"user1"},{$pop:{arr:1}}); --1表示最后一个,将arr里面的最后元素移除 db.c3.update({name:"user1"},{$pop:{arr:-1}}); -- -1表示删除第一个值 7):$pushAll 压入多个值 db.c3.update({name:"user1"},{$push:{arr:[4,5,6]}}); ---压入多个值 8):$addToSet 压入值是会去重复插入(如值里面有4,在这么插入里面只会有一个4) db.c3.update({name:"user1"},{$addToSet:{arr:4}}); --如果值里面有4,是插入不进去的,没有重复的则插入 $addToSet 和 $each 配合使用插入多个: db.c3.update({name:"user1"},{$addToSet:{arr:{$each:[7,8,9]}}}); --插多个 9):$pull 删除数组里面的某个值,针对数组 db.c3.update({name:"user1"},{$pull:{arr:5}}); --删除数组中为5的值 10):$pullAll一次性删除多个 db.c3.update({name:"user1"},{$pullAll:{arr:[2,4]}}); --删除值为2,4 11):$rename修改字段名 db.c3.update({name:"user1"},{$rename:{arr:"post"}}); 或 db.c3.update({name:"user1"},{$rename:{"arr":"post"}}); 12):特殊的操作符号 $ db.c3.insert({name:"user1",arr:[{tit:"php"},{tit:"java"},{tit:"linux"}]}); 把标题为linux的值改下: db.c3.update({"arr.tit":"linux"},{$set:{"arr.$.cnt":"linux is very good"}}); *小结: 场景1: db.c1.insert({name:"leyangjun",age:23}); var x=find({name:"user1"}); x --回车有值 x --在回车没值了,所以find本身是带有游标的 场景2: var x=findOne({name:"user1"}); x --回车有数据 x是一个json,在mogodb客户端的时候输出你就能看看出来 x --回车还有数据 x.sex="nan" --可以加字段,但是这加的字段是不会直接加到数据记录 x.sex="score" ...... 把x加字段,直接保存到
数据库
db.c1.save(x); --数据就加到里面去啦, db.c1.insert({name:"leyangjun",age:23}); ---增 db.c1.remove(); ---删(删除所有) db.c1.remove({"name":"leyangjun"}); --删除名字等于leyangjun的记录 db.c1.update({name:"leyangjun"},{name:"lekey"}); ---改,(如果还有age值的话,会被删除,只留下name值) db.c1.update({name:"leyangjun"},{$set:{name:"lekey"}}); --改,这个改会保留原有的值 db.c1.update({name:"lekey"},{$set:{sex:"nan"}}); --还可增加值,名字等于lekey记录增加字段值sex db.c1.find(); ---查 db.c1.find({"name":"leyangjun"}); ***普