一.MongoDB 基本概念详解
Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。Mongodb是一款非关系型数据库,说到非关系型数据库,区别于关系型数据库最显著的特征就是没有SQL语句,数据没有固定的数据类型,关系数据库的所使用的SQL语句自从 IBM 发明出来以后,已经有 40 多年的历史了,但是时至今日,开发程序员一般不太喜欢这个东西,因为它的基本理念和程序员编程的想法不一致。后来所谓的 NoSQL 风,指的就是那些不用 SQL 作为查询语言的数据存储系统,而文档数据库 MongoDB 正是 NoSQL 的代表。
看一下当下 数据库的排名就会发现,目前排在Mongodb数据库前面的无一例外是老牌的关系型数据库,而在No SQL序列中,Mongodb排名第一,且有上升的趋势
以下来自 https://www.db-engines.com 的数据
我们在正式进入Mongodb的学习之前,先来了解一下,MongoDB都有哪些特点,为什么要引入MongoDB以及MongoDB和关系型数据库的差异?
1. MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。MongoDB数据模型和你的对象在内存中的表现形式一样,一目了然的对象模型。
关系型数据库设计(第三范式):
2.同一个集合中可以包含不同字段(类型)的文档对象:同一个集合的字段可能不同
3.线上修改数据模式,修改时应用与数据库都无须下线
关系型数据库和文档型数据库主要概念对应
关系型数据库 | 文档型数据库 | |
---|---|---|
模型实体 | 表 | 集合 |
模型属性 | 列 | 字段 |
模型关系 | 表关联 | 内嵌数组,引用字段关联 |
二.MongoDB 快速实战
1. 获取安装包,如果慢的话可以自己到mongodb.com上下载再上传
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.2.tgz
- 进行解压
tar -xvzf mongodb-linux-x86_64-rhel70-4.4.2.tgz
- 添加到系统执行路径下面(vi ~/.bashrc)
执行 source ~/.bashrcexport PATH=$PATH:/usr/local/mongodb/bin
4. 创建数据目录mkdir -p /data/db # 这个路径是MongoDB默认的数据存放路径
- 启动MongoDB服务
或者从后台启动mongod # 如果你不希望使用的默认数据目录可以通过 添加 --dbpath 参数指定路径
需要指定 —logpath , 或者—syslogcd /data/db
mkdir logpath
cd logpath
touch output.out
mongod --logpath /data/db/logpath/output.out --fork
出现如下图所示提示则说明服务已经启动成功
也可以查看启动日志输出,cat output.out
https://docs.mongodb.com/guides/server/install/
客户端使用( mongo shell, 用来操作MongoDB的javascript客户端界面 ):
1. 连接服务mongo --host <HOSTNAME> --port <PORT>
# 如果在本机使用的都是默认参数,也可以直接忽略所有参数
- 设置密码 ```java use admin # 设置密码需要切换到admin库
db.createUser( { user: “azhi”, pwd: “2021888”, roles: [ “root” ] } )
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. 停服务
```java
db.shutdownServer() # 停掉服务
- exit 退出 mongo
5. 以授权模式启动
查看进程是否启动成功ps -ef | grep mongodmongod --auth
或者后台授权模式启动
mongod --auth --logpath /data/db/logpath/output.out --fork
6. 授权方式连接mongo -u azhi
- 连上之后就可以进行操作:
连上之后先来看看都有哪些操作
连接进来之后,就是一个命令行的窗体, 这也是JavaScript 语言的运行环境,所以可以在上面用javascript 进行脚本编写,执行,操作,管理数据库。
安全说明:
MongoDB基于安全性考虑,默认安装后只会绑定本地回环 IP 127.0.0.1, 可以通过启动服务时,指定绑定的IP 如 只允许通过 IP: 192.168.109.200 访问,如下,在启动时指定
这时登录需要通过mongod --bind_ip 192.168.109.200
mongod --bind_ip_all --auth --logpath /data/db/logpath/output.out --fork #开放外部访问
通过命令访问 MongoDBmongo -host 192.168.109.200 -u azhi
https://docs.mongodb.com/manual/tutorial/getting-started/
UI客户端访问:输入 db # 显示当前所在的数据库
use example # 切换数据库
https://docs.mongodb.com/compass/master/install
或者用Robo也很好用: