NoSQL04 - 部署MongoDB服务、MongoDB基本使用

一、搭建MongoDB服务器
1.装包
51]# tar -xf mongodb-linux-x86_64-rhel70-3.6.3.tgz                    //解包(已经源码安装好了)

51]# mkdir -p /usr/local/mongodb                                //创建相关的工作目录

51]# cp -r  mongodb-linux-x86_64-rhel70-3.6.3/bin/  /usr/local/mongodb/

51]# vim /etc/profile                                        //指定变量可免绝对路径
export PATH=/usr/local/mongodb/bin:$PATH

51]# source  /etc/profile                                //即刻生效

mkdir  -p etc logs data/db
bin  data  etc  logs

2. 手动创建服务配置文件
vim /usr/local/mongodb/etc/mongodb.conf
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongodb/data/db
fork=true

3.启动服务
[root@host51 ]# mongod -f /usr/local/mongodb/etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3453
child process started successfully, parent exiting

4. 查看相关进程
[root@host51 mongodb]# ps -C mongod
  PID TTY          TIME CMD
 3453 ?        00:00:00 mongod

[root@host51 mongodb]# ss -anptul  | grep 27017    (默认端口27017)
tcp    LISTEN     0      128    127.0.0.1:27017                 *:*                   users:((“mongod”,pid=3453,fd=11))

5. 定义启动/停止 服务的别名
51 ]# vim /etc/bashrc 
alias startmgo=’mongod  -f /usr/local/mongodb/etc/mongodb.conf’                       
alias stopmgo=’mongod  -f /usr/local/mongodb/etc/mongodb.conf –shutdown’  

51 ]# source  /etc/bashrc


6.修改配置文件指定物理连接
1)51 ~]# vim /usr/local/mongodb/etc/mongodb.conf
bind_ip=192.168.4.51
port=27051

2)重启服务
[root@host51 ~]# stopmgo 

[root@host51 ~]# startmgo 

[root@host51 ~]# ss -anptul | grep mongod
tcp    LISTEN     0      128    192.168.4.51:27051                 *:*                   users:((“mongod”,pid=4100,fd=11))

二、常用管理命令
1.连接数据库
[host51 ~]# mongo                  //连接mongo数据库服务(本地环回连接)
[root@host51 ~]# mongo –host 192.168.4.51 –port 27051       //物理连接

2.查看、创建、删除、切换库
2.1 数据库名称规范
1) 不能是空字符串(“”)
2) 不得含有    ”(空格)      .      $      /      \      \0(空字符)
3)应该全部小写
4)最多64个字节

show dbs                 //查看已有的库

use  库名                //切换库,若库不存在则延时创建库
> use bbsdb
switched to db bbsdb

> db                    //显示当前所在的库
bbsdb

db.dropDatabase()        //删除当前所在的库

3.查看、创建、删除集合和文档
 集合命名的规范?
-不能是空字符串 “”
-不能含有\0字符(空字符),此字符表示集合的结尾
-不能以”system.”开头,这是为系统集合保留前缀
-用户创建的集合不能含有保留字符

保留字符和关键字符的关系?
保留字: 系统留用(可能永远也不会用, 但是你不能用)。
关键字: 系统规定有特殊意义的词。
关键字, 一定是保留字。
保留字一般是等同于关键字的。

1)db.集合名.save({字段一:”值一”,字段二:”值二”,……..})     //创建集合时,集合不存在创建并添加文档
> db.c1.save({name:”bob”,age:21,sex:”girl”})
> db.c1.save({name:”bob”,email:”plj@tedu.cn”})

2)db.集合名.insert({字段一:”值一”,字段二:”值二”,……..})    //创建集合时,集合不存在创建并添加文档
> db.c1.insert({name:”lucy”,class:”nsd1804”,tel:”9998888”})

3)show collections 或 show tables                  //查看当前库下已有的集合

4)db.集合名.drop()                                 //删除集合
> db.c1.drop()


4.查看、统计、删除文档
> use bbsdb
switched to db bbsdb

> db
bbsdb

> show tables
> db.c1.save({name:”bob”,age:21,sex:”girl”})
WriteResult({ “nInserted” : 1 })

> db.c1.save({name:”lucy”,emial:”pjl@tedu.cn”})
WriteResult({ “nInserted” : 1 })

a.查看
> db.c1.find()    //不加条件默认查全部
{ “_id” : ObjectId(“5b612fc6406d3e344a8432cf”), “name” : “bob”, “age” : 21, “sex” : “girl” }
{ “_id” : ObjectId(“5b612fee406d3e344a8432d0”), “name” : “lucy”, “emial” : “pjl@tedu.cn” }

> db.c1.find({name:”lucy”})     //查看名字是lucy

> db.c1.findOne()             //返回一条文档

b.统计
> db.c1.count()

c.删除
> db.c1.remove({name:”lucy”})    //删除名字是lucy的文档

> db.c1.remove({})              //不加条件默认删除所有的文档


三、基本数据类型
1.字符串(utf-8)
> db.c2.save({name:”李俊”,sex:”boy”})


2.布尔bool(只能是true,false)
> db.c2.save({name:”jack”,school:”tarena”,single:false})

> db.c2.save({name:”jack”,school:”tarena”,single:true})


3.空   null
> db.c2.save({name:”lilei”,school:”tarena”,single:false,pay:null})


4. 数值
a. 默认使用64位浮点型数值 整数和小数都可以
> db.c2.save({name:”lilei”,gz:18000.88})
> db.c2.save({name:”tom”,gz:18000})

b. NumberInt(4字节整数)
> db.c2.save({name:”harry”,xf:NumberInt(498)})  
> db.c2.save({name:”tom”,xf:NumberInt(498.23)})  //可以存但是只取整数部分

c. NumberLong (8字节整数)
> db.c2.save({name:”tom”,xf:NumberLong(4918)})


5. 代码function( ){/*   */} 
> db.c2.save(
… {
… lname:”php”,
… code:function(){/* <?php echo “hello boy”; ?> */ },
… like:10000
… }
… )

> db.c2.find({lname:”php”})

6. 正则 /正则表达式/  和 内嵌
a.正则 
> db.c2.save({jname:”shell”,rcode:/.$/})
> db.c2.find({jname:”shell”})

b.内嵌
> db.c2.save({
         tarena: {address:”Beijing”,tel:”888888”,person:”hansy” }
         })

6.数组  [ 值1,值2,值N, ….]  
> db.c2.save({name:”xiaoqiang”,like:[“girl”,”game”,”eat”,”sleep”]})
> db.c2.find()


7.日期  New  Date( ) 


8.对象 ObjectId( )
> db.c2.save({name:”xiaohong”,stu_id:ObjectId(),class:”nsd1804”})


四、数据导入导出
]# mongoexport  –help
]# mkdir /mbak

1.数据导出
a. csv格式(必须加-f指定字段名列表)
]# mongoexport  –host  192.168.4.51  –port 27051  -d bbsdb  -c  c2 -f  name,school –type=csv  > /mbak/c2.csv
]#cat   /mbak/c2.csv


b. json格式
]# mongoexport  –host  192.168.4.51  –port 27051  -d bbsdb  -c c2   –type=json  > /mbak/c2.json

]#cat   /mbak/c2.json


2.数据导入
]# mongoimport –help

a. json格式的导入
]# mongoimport     –host  192.168.4.51  –port 27051  -d  gamedb \
-c  col  –type=json   /mbak/c2.json


b.csv格式的导入
]# mongoimport     –host  192.168.4.51  –port 27051  -d  gamedb \
-c  stu –headerline  –type=csv   /mbak/c2.csv            //导入时忽略标题


]# mongoimport     –host  192.168.4.51  –port 27051  -d  gamedb \
-c  tea  -f name , school  –type=csv   /mbak/c2.csv     //导入时不忽略标题


]# mongoimport     –host  192.168.4.51  –port 27051  -d  gamedb  \
-c  tea  -f name , school  –type=csv   –drop  /mbak/c2.csv        //删除原数据再导入

总结: 1)导入数据,若库和集合不存在,则先创建库和集合后再导入数据        
    2)若库和集合已经存在,则以追加的方式导入到数据集合里
    

3. 把系统用户信息 (/etc/passwd ) 存储到 mongodb服务器 userdb库下coluser集合里?  
a.先创建结构
> use  userdb
> db.coluser.save({
… name:”yaya”,
… password:”x”,
… uid:1,
… gid:1,
… comment:”my teacher”,
… homedir:”/home/yaya”,
… shell:”/bin/bash”
… })
>db.coluser.find();

b.导出数据
]# mongoexport –host 192.168.4.51  –port 27051   -d userdb  -c coluser  -f \ name,password,uid,gid,comment,homedir,shell  –type=csv  > /mbak/coluser.csv

]# cat  /mbak/coluser.csv


c.拷贝 、修改生成coluser.csv
]# cp /etc/passwd /mbak/
]# sed -i ‘s/:/,/g’ passwd 
]# cat passwd
]# cd  /mbak
]# sed -i  ‘2r passwd’  coluser.csv

d. 导入数据
]# mongoimport  –host  192.168.4.51  –port 27051  -d userdb  -c \
coluser  –headerline –drop  –type=csv /mbak/coluser.csv

> db.coluser.find()

五、数据备份的备份和恢复
1. 数据备份
a.备份时不指定路径默认当前路径以dump目录出现(不指定库默认备份全部)
]# pwd
]# mongodump –host 192.168.4.51 –port 27051
]# ls  dump

]# cd /opt
]# mongodump –host 192.168.4.51 –port 27051 -d userdb
]# ls  dump/userdb


b.备份时指定路径
]# mongodump –host 192.168.4.51 –port 27051 -d gamedb  -c  stu  -o /bak1
]# ls  /bak1


2.数据恢复
a.模拟数据丢失
>  use  gamedb
>  db.stu.remove({})

b.数据恢复(也可以恢复到一个不存在的库或集合)
]# mongorestore –host 192.168.4.51  –port 27051 -d gamedb -c stu  /bak1/gamedb/stu.bson 

c.查看恢复的数据
>  use  gamedb
>  db.stu.count()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值