mongo安装以及基础应用

运维 jason 634℃ 1评论



简介

mongo是非关系型的数据库,是以key-value形式存储的,Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作,基于文档的,适合单纯的海量数据存储,不适合高度事务性的系统以及复杂多表查询。

安装

1 安装非常的简单 (路径 /user/local/src)

http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.1.tgz

2 解压

tar -zxvf mongodb-linux-i686-2.0.2-rc2.tgz

3 我们把 mongodb-linux-i686-2.0.2-rc2重命名为mongodb (方便操作)

保证良好习惯,将bin放到/usr/local/mongodb下

4 mongodb目录下新建一个data文件夹存放数据,新建一个dblogs文件存放日志

mkdir data     touch dblogs

5 启动mongod

cd /usr/local/mongodb/bin
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/dblogs --logappend  --fork 
// --fork 是为了让程序后台执行  

6 检查mongodb进程

pstree -p | grep mongod 

7 添加到自动开启

cd /etc/rc.local

8 mongodb 在这里安装完成!!

注意:
1 结束进程

1)pkill   2)killall   3)kill -9

2 在mongodb中要注意不能用kill -9 否则mongodb就再也起不来了,如果用了,就进入data目录下删掉mongod.lock

启动命令常用参数说明:


--dbpath                       
 指定数据库文件存放的目录

--port                      
指定mongod服务使用的端口默认27017

--fork                      
设置mongo服务为后台运行

--logpath                  
指定log文件的目录和文件名

--logappend             
设置每次log添加在文件最后

--journal                      
启用日志

--pidfilepath                
指定进程文件的路径,如果不指定,系统将不产生进程

--maxConns               
最大并发连接数

--noprealloc                
关闭数据文件的预分配功能

--rest                       
关闭rest api功能

--nohttpinterface        
关闭web管理功能

--auth                      
指定mongo使用身份验证机制

--bind_ip                 
绑定ip

基本操作

1 cd /usr/local/src/mongodb/bin/


登陆 ./mongo         查看数据库  show dbs        当前数据库 db   
数据库的集合 show tables/collections; 

2 简单的增删改查


增加  db.c1.insert({name:'user1',age:21});自动创建C1集合,并插入json对象   

查询  db.c1.find();     _id 由 机器号 时间 进程号 当前命名编号 四部分组成

删除  db.c1.remove({name:"user1"});

修改  db.c1.update({name:"user1"},{name:"user100"});  把。。改为。。
         db.c1.update({name:"user1"},{$set:{name:"user200"}});(也可以用来       	添加)

删除集合  db.c1.drop();

删除数据库 db.dropDatabase();  添加数据库 use mydb; 

创建集合  db.createCollection('c1');

3 存储类型

null  布尔类型   32为整数  64位整数  64位浮点数   字符串   符号  objectId 
日期   正则表达式   代码  数组  内嵌文档

4 详解数据库操作


1) save有相同ID的则修改,没有ID的则添加

2) db.c1.insert({name:'jason',post:{tit:1,cnt:111}});  可以是json
    db.c1.insert({name:'jason',post:[1,2,3,4,5]});       可以是数组
    不介意一层层的套,在mongodb中不会出现问题(js操作)php不行
   (排序就是很大的问题)

3) db.c1.find({name:'user1'},name:1);    name为真,只要name这一列
   (select name from c1 where name = 'user1';)

4) 条件表达式(魔术方法:类似php的魔术方法)
    大于:$gt  小于:$lt  大于等于$gte  小于等于$lte  
    列:db.c1.find({age:{$gt:5}}); 
    等于 db.c1.find({age:5});   不等于 db.c1.find({age:{$ne:5}});
  
5) db.c1.count(); 记录条数

6) sort 排序
    db.c1.find().sort({age:1})  1 升序 -1 降序

7) limit
    db.c1.find().limit(5)  显示5条     db.c1.find().skip(2).limit(5)  跳过2条显示5条
 
8) db.c1.find().skip(2).limit(5).count(); count参数默认为0  不解析中间的
    db.c1.find().skip(2).limit(5).count(1);  这是正确的

9) $all  主要正对数组
    db.c1.insert({name:"jason",post:[1,2,3,4,5]});
    db.c1.find({post:{$all:[1,3,5]}})

10) $exists 测试一个字段是否存在
      db.c1.find({name:{$exists:1}}) 

11) $mod  取余的
      db.c1.find({age:{$mod:[2,1]}});   除以2余数为1的 条件

12) $in
      db.c1.find({age:{$in:[1,2,3]}});    相当于 mysql的 in();
      $nin 相反
13) $or
      db.c1.find({$or:[{name:"user1",name:"user2"}]});  user1或者user2
      $nor  相反

14) $size  通过数组个数来匹配

15) 正则 和php相似 
      db.c1.find({name:/user/i});

转载请注明:Jason博客 » mongo安装以及基础应用

喜欢 (3)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

记载着一个程序员的编码历程