官方
MongoDB是一个文档数据库,旨在方便应用开发和扩展。

百度百科
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型 。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
总结: mongoDB 是一个非关系型文档数据库
传统方式安装默认没有开启远程连接权限
# 1.下载 MongoDB
- https://www.mongodb.com/try/download/community

# 2.将下载安装包上传到linux系统(下面的是ubuntu下的安装包)
- tar -zxf mongodb-linux-x86_64-ubuntu2004-5.0.5.tgz
- mv mongodb-linux-x86_64-ubuntu2004-5.0.5 mongodb # 将解压出来的目录文件重命名,简洁一些

# 3.查看安装目录
- ls
`bin`目录 用来存放启动mongoDB的服务以及客户端链接的脚本文件等


# 4. 在mongodb安装目录里创建data数据目录 和 日志文件目录 logs
cd mongodb
mkdir data logs
注: 启动mongodb时需要存放数据的目录和日志目录,这些目录需要提前创建,如果没有的话在启动mongodb时并不会
自动创建,且如果这些目录不存在的话mongodb启动会失败.
# 5.启动 MongoDB 服务
cd mongodb/bin
./mongod --port=27017 --dbpath=../data --logpath=../logs/mongo.log
`--port` 指定服务监听端口号 默认为 27017
`--dbpath` 指定 mongodb 数据存放目录 启动要求目录必须存在
`--logpath` 指定 mongodb 日志文件存放位置
注: mongodb启动是前台运行,如果想要关闭mongodb的话直接 crtl + c 就行

注意: 由于指定日志文件因此启动时日志输出到日志中终端不显示任何日志
# 6.客户端连接
cd mongodb/bin/
./mongo --port=27017

# 7.传统方式安装如何开启远程连接权限
启动mongodb时后面加上 --bind_ip=0.0.0.0 代表所有的ip地址都可以访问 mongodb
./mongod --port=27017 --dbpath=../data --logpath=../logs/mongo.log --bind_ip=0.0.0.0
docker方式安装默认开启了远程连接权限
# 1.拉取 mongodb 镜像
- docker pull mongo:5.0.5

# 2.运行 mongo 镜像
docker run -d --name mongo -p 27017:27017 mongo:5.0.5

# 3.进入 mongo 容器
- docker exec -it 容器id bash
- mongo # 进入mongo容器之后直接输入mongo就可以进入mongodb客户端

注:一旦进入mongodb客户端,默认进入的是 test 库,且mongodb中如果一个库没有数据,使用 show dbs; 命令不会显示这个库,但是这个库是存在的. 只有给空库插入一条数据, 之后使用 show dbs; 才会显示这个库
mongodb中的库就类似于传统关系型数据库中库的概念,用来通过不同库隔离不同应用数据。mongodb中可以建立多个数据库。每一个库都有自己的集合和权限,不同的数据库也放置在不同的文件中。默认的数据库为"test",数据库存储在启动时指定的data目录中。
集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表的概念。
集合存在于数据库中,一个库中可以创建多个集合。每个集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
文档集合中一条条记录,是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
一个简单的文档例子如下:
{"site":"www.baizhiedu.xin", "name":"编程不良人"}
| RDBMS | MongoDB |
|---|---|
| 数据库 | 数据库 |
| 表
| 集合 |
| 行 | 文档 |
| 列 | 字段 |