MongoDB 安装 和 增删改查操作

wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.0.tgz
解压
复制目录下的bin 到/usr/local/mongdb 下
在mongdn下mkdir data
touch dblogs
/usr/local/mongodb/bin/mongod –dbpath=/usr/local/mongodb/data/ –logpath=/usr/local/mongodb/dblogs &   //启动mongdb
vi /etv/rc.local
加入 /usr/local/mongodb/bin/mongod –dbpath=/usr/local/mongodb/data/ –logpath=/usr/local/mongodb/dblogs & //ro.local是计算机启动比较后启动的文件
pkill mongdb 关掉进程
进入数据库(默认进入test)
/usr/local/mongodb/bin/mongo
show dbs  查看数据库
show tables 查看集合
db.c1.insert({name:”user1″}); 插入数据库  插入时如果没有数据库会自动创建
db.c1.save({_id:1,name:”user3″});  //必须定义_id,如果id相同则修改,如果不相同者增加,如果用insert,遇到相同id则报错+
db.c1.find(); 查找  相当于 select * from c1
db.c1.find({name:”user11″},{name:1,_id:0});  //只选择name=user11那一列,_id默认是要出来的,_id=0设定它不出来
var x = db.c1.find({name:”user11″},{name:1,_id:0});
db.c1.save(x);  //会按照x的规则插入c1集合
db.c1.find({age:{$gt:5}}); 查找age>5的,$lt表示小于,$lte表示小于等于 ,$gte表示大于等于 ,$neq表示不等于
db.c1.find().sort({age:1});以年龄的升序排序 1=升序, -1=降序
db.c1.find({条件}).
db.c1.find({条件}).limit(4); 限制显示4条\
db.c1.find().skip(1).limit(4);从1开始,选择4个 //相当于 select * from ti limit(1,4)
db.c1.find({post:{$all:[1,2,3]}}); //post:[1,2,3,4,5] 匹配含有1,2,3 post的行 $all匹配包含的意思
db.c1.find({age:{$in:[18,20,19]}}); //匹配含18,20或19的age的行     或的意思
db.c1.find({age:{$exists:true}});   //测试age字段是否存在 如果存在返回所有存在的行
db.c1.find({age:{$mod:[2,1]}}); //取余为1的,[]在这里表示运算符[2,1]除以2余1的
db.c1.find({条件}).count(); 统计
db.c1.find({$or:[{name:”user1″},{age:”20″}]});  //查找name=user1 或者 age=20 的人 可匹配多个字段
db.c1.find({$nor:[{name:”user1″},{age:”20″}]});  //查找name!=user1 和 age!=20 的人 可匹配多个字段
db.c1.find({post:$size:5});  post:[1.2.3.4.5]  //匹配post数组的个数
db.c1.distinct(“name”);  //去掉重复的值,得出一个数组
db.c1.find({name:/user/i}); //正则匹配含user的行
db.c1.find({“post.tit”:2}); //查找post数组下key=tit,val=2的行
db.c1.find({post:{$elemMatch:{tit:”cc”}}}); //同上
db.c1.find({},{post:{$slice:4}});  {}必须加,里面填其他条件,post是一个数组,匹配数组的前4个值,如果post只有3个或者2个 也可以匹配打破。 $slice:-2匹配后2个值 $slice[5,10] 从第五个开始,匹配10个
db.c1.count();统计
db.c1.find().skip(1).limit(4).count(1); //count(1)  条件.skip(1).limit(4) 才会被匹配,count(0) 无视前面的条件
db.c1.updata(criteria,objnew,upsert,Muliti);
criteria:查询条件
objnew:更新内容
upsert:如果记录存在更新它,否则增加 默认是false
multi:默认只会更改第一天记录  所以最好是填写true
db.c1.updata({name:”user1″},{$set:{name:”user10″}}); //把name为user1的信息 修改成 name为user10 ,填其他字段可以添加 比如 db.c1.updata({name:”user1″},{$set:{sex:”nan”}});
注意:{ “_id” : ObjectId(“503f1578db3d9671235fc99f”), “arr” : [ { “tit” : “linux” }, { “tit” : “php” }, { “tit” : “mongodb” } ], “name” : “user1” }
像这样的行(包含子json),如果需要改 arr.tit=linux 则需要这样操作
db.c1.update({“arr.tit”:”linux”},{$set:{“arr.$.tit”:”linux is very easy”}});  //$表示前面匹配的数组{“arr.tit”:”linux”}
db.c1.update({},{$unset:{score:1}},0,1);  //删除集合中得所有分数字段
db.c1.update({name:”user1″},{$push:{post:4}});  //在post的数组中追加4
db.c1.update({name:”user1″},{$pop:{post:1}});  //$pop表示弹出最后一个值,这里表示删掉post数组中的最后一个值,如果取-1则把第一个值删掉
db.c1.update({name:”user1″},{$pushAll:[5,6,7]}); //在post数组中追加多个值,不是加入整个数组
db.c1.update({name:”user1″},{$addToSet:{post:5}}); //去掉重复值,往post数组里面压入5,如果5已经重复则不操作,如果5不存在则压入
db.c1.update({name:”user1″},{$addToSet:{post:{$each:[5,6,7,8]}}}); 同上,但这次是压入多个值
db.c1.update({name:”user1″},{$rename:{post:”arr”}})  //$rename 改名,把post改成arr
db.c1.updata({name:”user1″,{$inc:{score:10}}},0,1); //$inc数字加减
$set 直接改值  $inc 数字加减
db.c1.remove();清空集合  //db.c1.remove({条件})
db.c5.drop();   //删除集合
db.dropDatabase();  // db 默认代表test数据库
db.createCollection(“c1”);  //直接创建一个集合
db.system.indexes 这个集合装着所有集合的索引

发表评论