一.Mongodb的简单介绍
NoSQL简介

  NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型的数据库 。是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
  关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成都一样,即使不是每条记录都需要所有的字段,但数据库会为每条数据分配所有的字段。而非关系型数据库以键值对(key-value)存储,它的结构不固定,每一条记录可以有不一样的键,每条记录可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

NoSql数据库优缺点

在优势方面主要体现在下面几点:- 简单的扩展
快速的读写
低廉的成本
灵活的数据模型

在不足方面主要有下面几点:
不提供对SQL的支持
支持的特性不够丰富
现有的产品不够成熟

MongoDB简介

MongoDB是用C++语言编写的非关系型数据库。特点是高性能、易部署、易使用,存储数据十分方便,主要特性有:
面向集合存储,易于存储对象类型的数据
模式自由
支持动态查询
支持完全索引,包含内部对象
支持复制和故障恢复
使用高效的二进制数据存储,包括大型对象
文件存储格式为BSON(一种JSON的扩展)

MongoDB基本概念
文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行(但是比行要复杂的多)。
集合(collection)就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。
MongoDB的单个计算机可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限。
MongoDB自带简洁但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操作数据作用非常大。
每一个文档都有一个特殊的键”_id”,它在文档所处的集合中是唯一的,相当于关系数据库中的表的主键。

二.mongodb的安装和配置
安装环境centos7

1.下载包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.12.tgz

2、解压tar -zxvf mongodb-linux-x86_64-3.2.12.tgz

3、移动到指定位置mv mongodb-linux-x86_64-3.2.12/ /usr/local/mongodb

4、在/usr/local/mongodb下创建文件夹

存放数据 mkdir /data
存放日志mkdir /logs

5、在/usr/local/mongodb/bin下新建配置vi mongodb.conf

dbpath = /usr/local/mongodb/data/db #数据文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录
port = 27017  #端口
fork = true  #以守护程序的方式启用,即在后台运行

bind_ip =127.0.0.1 #绑定ip
verbose = vvvvv 日志级别,可以写1个v,最多5个v,v越多越详细

MongoDB简单介绍及使用

mongod 为服务端
mongo 为客户端

6、环境变量配置vim /etc/profile 
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
保存后,重启系统配置source /etc/profile

7、启动在/usr/local/mongodb/bin下mongod -f mongodb.conf 或 ./mongod -f mongodb.conf
启动后查看
MongoDB简单介绍及使用

8、关闭mongod -f ./mongodb.conf --shutdown  或./mongod -f ./mongodb.conf --shutdown

9..连接使用mongod
客户端连接mongod服务,出现警告,安装时最好不要用root用户安装,
使用admin用户退出,并查看退出日志
MongoDB简单介绍及使用_第1张图片
MongoDB简单介绍及使用_第2张图片

三.mongodb的基本使用增删改查

1.创建库和表
表是一个集合,里面的数据是json格式的,前面的id是全局id,是不重复的
MongoDB简单介绍及使用_第3张图片

2.数据的查找
find()
MongoDB简单介绍及使用_第4张图片

使用for循环插入多条数据
MongoDB简单介绍及使用_第5张图片

count()查询数量
MongoDB简单介绍及使用

条件查询,skip跳过前三条,查询2个,按id排序
MongoDB简单介绍及使用

注:
在查询的后面加上explain(),可以显示查询的详细参数,包括索引,时间等信息

3.数据更新
update()
MongoDB简单介绍及使用_第6张图片

更新多个字段数据的其中一个
MongoDB简单介绍及使用
MongoDB简单介绍及使用

复制一条空数据,有时候会出现还是空数据
MongoDB简单介绍及使用

后面加上true,如果是空自动插入一条数据
MongoDB简单介绍及使用_第7张图片

4.更新多条数据
MongoDB简单介绍及使用_第8张图片
这样只能更新一条
MongoDB简单介绍及使用_第9张图片

使用{$set:{c:2}},false,true即可
MongoDB简单介绍及使用_第10张图片

5.删除数据
删除为了安全,必须给参数
MongoDB简单介绍及使用

MongoDB简单介绍及使用_第11张图片

删除表
MongoDB简单介绍及使用

四.mongostat工具

实时采集
MongoDB简单介绍及使用_第12张图片

参数介绍
inserts 每秒插入数量
query 每秒查询数量
update 每秒更新数量
delete 每秒删除数量
getmore 查询大数据的时候不能一次显示完,每次获取以后更多的数据
command 执行命令的数量
flushes 每秒虚拟映射的次数,每次内存数据刷到硬盘上
vsize 占据内存大小
res
qr | qw 读队列和写队列,重要
ar | aw 当前客户端活跃的数量
netIn 输入流量
netOut 输出流量
conn 当前的连接数量

五.mongoDB相关安全设置
1.创建用户
角色类型:内建类型(read,readWrite,dbAdmin,dbOwner,userAdmin)
添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase)
MongoDB简单介绍及使用_第13张图片

注:添加完用户后可以使用show users或db.system.users.find()查看已有用户
MongoDB简单介绍及使用_第14张图片
use mydb

db.system.users.remove({user:"root"})
db.system.users.find()

2、添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭

谨记:先在不开启认证的情况下,创建用户,之后关闭服务,然后再开启认证,才生效。

开启权限认证
vim mongodb.conf
auth = true

重新启动
[root@server1 bin]# mongo 127.0.0.1:27017

查看日志,认证开启
MongoDB简单介绍及使用_第15张图片

3.进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的。验证之后还是做不了操作,因为admin只有用户管理权限,下面创建student用户,用户都跟着库走。
[root@server1 bin]# mongo 127.0.0.1:27017
MongoDB简单介绍及使用_第16张图片

4.使用创建的用户student登录进行数据库操作
MongoDB简单介绍及使用_第17张图片

5、删除用户
db.dropUser("user") 删除指定用户
db.dropAllUsers() 删除当前数据下所有用户

六.mongodb的备份恢复
1、MongoDB数据库备份
mongodump -h dbhost -d dbname -o dbdirectory
参数说明:
-h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d: 需要备份的数据库实例,例如:test
-o: 备份的数据存放位置,例如:/home/mongodump/,当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据。
实例:
MongoDB简单介绍及使用_第18张图片

备份mydb库
MongoDB简单介绍及使用

删除testdb表
MongoDB简单介绍及使用_第19张图片

2、MongoDB数据库恢复
mongorestore -h dbhost -d dbname --dir dbdirectory

参数或名:
h: MongoDB所在服务器地址
d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
-dir: 备份数据所在位置,例如:/home/mongodump/itcast/
-drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!
MongoDB简单介绍及使用_第20张图片