一.MongoDB 基本概念详解
    Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。Mongodb是一款非关系型数据库,说到非关系型数据库,区别于关系型数据库最显著的特征就是没有SQL语句,数据没有固定的数据类型,关系数据库的所使用的SQL语句自从 IBM 发明出来以后,已经有 40 多年的历史了,但是时至今日,开发程序员一般不太喜欢这个东西,因为它的基本理念和程序员编程的想法不一致。后来所谓的 NoSQL 风,指的就是那些不用 SQL 作为查询语言的数据存储系统,而文档数据库 MongoDB 正是 NoSQL 的代表。
    看一下当下 数据库的排名就会发现,目前排在Mongodb数据库前面的无一例外是老牌的关系型数据库,而在No SQL序列中,Mongodb排名第一,且有上升的趋势
    以下来自 https://www.db-engines.com 的数据
    image.png
    我们在正式进入Mongodb的学习之前,先来了解一下,MongoDB都有哪些特点,为什么要引入MongoDB以及MongoDB和关系型数据库的差异?
    1. MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。MongoDB数据模型和你的对象在内存中的表现形式一样,一目了然的对象模型。
    image.png
    关系型数据库设计(第三范式):
    image.png
    2.同一个集合中可以包含不同字段(类型)的文档对象:同一个集合的字段可能不同
    3.线上修改数据模式,修改时应用与数据库都无须下线
    关系型数据库和文档型数据库主要概念对应

    关系型数据库 文档型数据库
    模型实体 集合
    模型属性 字段
    模型关系 表关联 内嵌数组,引用字段关联

    image.png
    image.png
    二.MongoDB 快速实战
    1. 获取安装包,如果慢的话可以自己到mongodb.com上下载再上传

    1. wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.2.tgz
    1. 进行解压
      1. tar -xvzf mongodb-linux-x86_64-rhel70-4.4.2.tgz
    2. 添加到系统执行路径下面(vi ~/.bashrc)
      1. export PATH=$PATH:/usr/local/mongodb/bin
      执行 source ~/.bashrc
      4. 创建数据目录
      1. mkdir -p /data/db # 这个路径是MongoDB默认的数据存放路径
    3. 启动MongoDB服务
      1. mongod # 如果你不希望使用的默认数据目录可以通过 添加 --dbpath 参数指定路径
      或者从后台启动
      1. cd /data/db
      2. mkdir logpath
      3. cd logpath
      4. touch output.out
      5. mongod --logpath /data/db/logpath/output.out --fork
      需要指定 —logpath , 或者—syslog
      出现如下图所示提示则说明服务已经启动成功
      image.png
      也可以查看启动日志输出,
      1. cat output.out
      image.png
      https://docs.mongodb.com/guides/server/install/
      客户端使用( mongo shell, 用来操作MongoDB的javascript客户端界面 ):
      1. 连接服务
      1. mongo --host <HOSTNAME> --port <PORT>
      2. # 如果在本机使用的都是默认参数,也可以直接忽略所有参数
      1. 设置密码 ```java use admin # 设置密码需要切换到admin库

    db.createUser( { user: “azhi”, pwd: “2021888”, roles: [ “root” ] } )

    1. show users # 查看所有用户信息 <br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22260675/1630662939721-493caf11-546a-445e-a276-cbf012f1523d.png#clientId=u635be6ab-daf2-4&from=paste&height=555&id=ue3c356a3&margin=%5Bobject%20Object%5D&name=image.png&originHeight=656&originWidth=604&originalType=binary&ratio=1&size=33435&status=done&style=none&taskId=u45c1b263-8007-4088-99b1-9dc9b3e726e&width=511)<br />3. 停服务
    2. ```java
    3. db.shutdownServer() # 停掉服务
    1. exit 退出 mongo
      5. 以授权模式启动
      1. mongod --auth
      2. 或者后台授权模式启动
      3. mongod --auth --logpath /data/db/logpath/output.out --fork
      查看进程是否启动成功ps -ef | grep mongod
      image.png
      6. 授权方式连接
      1. mongo -u azhi
    2. 连上之后就可以进行操作:
      连上之后先来看看都有哪些操作
      image.png
      连接进来之后,就是一个命令行的窗体, 这也是JavaScript 语言的运行环境,所以可以在上面用javascript 进行脚本编写,执行,操作,管理数据库。
      image.png
      安全说明:
      MongoDB基于安全性考虑,默认安装后只会绑定本地回环 IP 127.0.0.1, 可以通过启动服务时,指定绑定的IP 如 只允许通过 IP: 192.168.109.200 访问,如下,在启动时指定
      1. mongod --bind_ip 192.168.109.200
      2. mongod --bind_ip_all --auth --logpath /data/db/logpath/output.out --fork #开放外部访问
      这时登录需要通过
      1. mongo -host 192.168.109.200 -u azhi
      通过命令访问 MongoDB
      https://docs.mongodb.com/manual/tutorial/getting-started/
      1. 输入 db # 显示当前所在的数据库
      2. use example # 切换数据库
      UI客户端访问:
      https://docs.mongodb.com/compass/master/install
      image.png
      或者用Robo也很好用:
      image.png