MonGoDB的入门学习(一)之MonGoDB的介绍和安装
MonGoDB
Windows下载安装
https://www.mongodb.com/try/download/community?tck=docs_server

直接下载就行
下载好后进行安装,目录自行选择,这里我安装在了E目录下

安装好后原本是没有data文件和log文件夹的,这里我们需要自己手动创建这两个文件夹,并且要在data文件夹中在创建一个db文件夹


接下来就可以启动应用服务了,以管理员身份运行cmd命令窗口,并进入至E:\MongoDB\bin目录下,执行以下命令
mongod --dbpath E:\MongoDB\data\db

再打开一个cmd命令窗口,并且还是以管理员身份打开,进入到E:\MongoDB\bin目录下,执行以下命令
mongo

(如果现实这个界面就说明MongoDb已经启动成功了,但是要注意,这两个cmd命令框关闭后那么MongoDB也就结束服务了)
6、启动后我们可以在服务器输入 http://127.0.0.1:27017 或者 http://localhost:27017 进行查看

(这个样子就说明启动成功了)
7、使用配置文件启动MongoDB服务:在E:\MongoDB\config创建一个文件mongodb.conf,加入配置文件与直接运行命令的效果是一样的
dbpath=E:\MongoDb\data\db # 数据库文件 logpath=E:\MongoDB\log\mongodb.log # 日志文件 logappend=true # 日志采用追加模式,配置后mongodb日志会追加到现有的日志文件,不会重新创建一个新文件 journal=true # 启用日志文件,默认启用 quiet=true # 这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为 false port=27017 # 端口号 默认为 27017
然后运行命令:
sc create MongoDB binPath= "E:\MongoDB\bin\mongod.exe --service --config=E:\MongoDb\config\mongodb.conf"
8、将MongoDB加入至环境变量:此时进入至mongodb的目录才可以使用mongodb的命令行工具,如果在其他的目录,是不可以使用mongodb的命令行工具的,我们可以将mongodb的目录加入至环境变量,这样在任何位置都可以使用mongodb命令行工具了
在设置中搜索变量就可以看到点击环境变量将mongodb的bin目录加入至path环境变量中

在加入了环境变量后,随便在哪个目录都可以使用mongodb命令行工具了
Linux下载安装
https://www.mongodb.com/try/download/community

一、创建MongoDB的安装路径
在/usr/local/ 创建文件夹mongoDB
mkdir mongodb
二、上传文件到Linux上的/usr/local/mangodb目录下
我首先在mongoDB下载路径下载mongoDB下载对应的版本.
通过FTP工具将安装包上传到linux机器上面.
三、解压文件
进入到/usr/local/mongodb目录:
cd /usr/local/mongodb
运行如下命令:
tar zxvf mongodb-linux-x86_64-rhel70-5.0.5.tgz C /usr/local/mongodb 或者 tar zxvf mongodb-linux-x86_64-rhel70-5.0.5.tgz
这里的 C 是解压后复制解压的文件到 /usr/local/mongoDB 目录下
四、重命名
进入 解压后的目录
cd /usr/local/mongoDB/
执行
mv mongodb-linux-x86_64-rhel70-5.0.5 mongodb
五、创建配置文件
进入目录
cd /usr/local/mongodb
创建数据库文件夹:mkdir data/db data/logs -p
创建mongo配置文件夹:mkdir etc
进入日志文件夹:
cd /usr/local/mongodb/data/logs
创建日志文件:
touch mongodb.log
进入配置文件夹:
cd /usr/local/mongodb/etc
创建配置文件:
vim mongodb.conf
该命令无该文件保存后会创建该文件,有该文件就是进入编辑
输入 i,进入编辑模式, 写入如下内容后,按esc 建 输入 :wq 保存退出
第一个(第二个4.0之后就不太好用)
#MonGoDB的配置文件 mongod.conf
# 配置文件全部配置参考下面网址:
# http://docs.mongodb.org/manual/reference/configuration-options/
# 存储数据的地点和方法.
storage:
dbPath: /usr/local/mongodb/data/db
journal:
enabled: true
# engine:
# wiredTiger:
# 写入日志数据的位置.
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/data/logs/mongod.log
#进程如何运行
processManagement:
fork: true # 是否启用进程在后台进行
pidFilePath: /usr/local/mongodb/mongodb.pid #pidfile的位置
timeZoneInfo: /usr/share/zoneinfo
# 网络配置
net:
port: 27017 #默认端口号
bindIp: 0.0.0.0 #设定IP地址白名单,此处我们注释为了方便学习
#为了方便学习改为true,生产环境使用白名单
bindIpAll: true #是否允许所有的ip地址访问默认是fase
#processManagement:
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
第二个配置(重点)
#数据库文件存放路径 dbpath=/usr/local/mongodb/data/db #日志文件存放路径 logpath=/usr/local/mongodb/data/logs/mongodb.log #错误日志采用追加模式 logappend=true #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=true # 最大同时连接数 maxConns=100 # 不启用验证权限 noauth=true #端口 port=27017 #以守护程序的方式启用,即在后台运行开启子进程 fork=true #引擎设置 版本不同,引擎是不一样的,不用加 #storageEngine=mmapv1 #开启认证,首次安装先不开启,待用户添加完毕后可开启认证,这里先注释掉 #auth=true
#以守护程序的方式启用,即在后台运行
nohttpinterface = true #绑定ip 这里设置为0.0.0.0则无论什么ip连接都成功,默认是127.0.0.1,也可设置成你自己服务器的IP bind_ip=0.0.0.0
启动mongodb:
./mongod -f /usr/local/mongodb/etc/mongodb.conf
如下图就是启动成功!

启动成功后查看mongod状态
ps -ef | grep mongod #查看mongod状态
六、设置环境变量
添加环境变量后我们就可以在任意地方直接使用mognodb 的命令了
vi /etc/profile export PATH=$PATH:/usr/local/mongodb/bin #刷新权限 source /etc/profile 查看mongodb环境 mongo --version #查看mongodb状态 ps -ef | grep mongodb #杀死进程 kill -9 xxxx 使用下面这个命令启动 mongod --dbpath /usr/local/mongodb --logpath /usr/local/mongodb/data/logs/mongo.log --fork 开启验证码 mongod --dbpath /usr/local/mongodb --logpath /usr/local/mongodb/data/logs/mongo.log --fork --auth 第一个配置启动命令 mongod -f /usr/local/mongodb/etc/mongod.conf #通过制定配置文件来实现启动 关闭mongodb服务 方式1: 杀死进程就行
七、开机自启
vi /usr/lib/systemd/system/mongodb.service
进行配置
[Unit] Description=mongodb After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongod.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/bin/mongod.conf PrivateTmp=true [Install] WantedBy=multi-user.target
命令
设置权限 chmod 754 /etc/systemd/system/mongodb.service 重启 systemctl daemon-reload 启动 sudo systemctl start mongodb 查看启动信息 sudo systemctl status mongodb 永久启动 sudo systemctl enable mongodb 关闭自启动服务 systemctl disable mongod.service 停止服务 systemctl stop mongod 如果有journalctl -xe 使用journalctl -xe 查看错误日志,看到: Feb 25 10:35:15 jt-server1 mongod[26053]: Error reading config file: No such file or directory Feb 25 10:35:15 jt-server1 mongod[26053]: try '/opt/soft/mongodb/bin/mongod --help' for more information 接着去检查 一下mongodb.service文件
添加用户
# 进入数据库
mongo
# 进入testclient数据库
use testclient
# 创建超级管理员(可以创建数据库)
db.createUser({user:"root",pwd:"root",roles:[{role: 'root', db: 'admin'}]})
# 退出
exit
# 登录testclient 数据库
mongo testclient
# root管理员登录
db.auth('root','root')
MonGoDB的应用场景
- 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
- 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
- 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
- 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
- 视频直播,使用 MongoDB 存储用户信息、礼物信息等
MonGoDB的优点
1 满足对数据库的高并发读写
2 对海量数据的高效存储和访问
3 对数据库高扩展性和高可用性
4 灵活的数据结构,满足数据结构不固定的场景
MonGoDB的缺点
1 一般不支持事务
2 实现复杂SQL查询比较复杂
3 运维人员数据维护门槛较高
4 目前不是主流的数据库技术
MonGoDB的特性
1 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;
2 格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;
3 强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;
4 完整的索引支持,支持查询计划;
5 支持复制和自动故障转移;
6 支持二进制数据及大型对象(文件)的高效存储;
7 使用分片集群提升系统扩展性;
8 使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作;
什么场景不能用MongoDB?
1 高度事务性系统:例如银行、财务等系统。MongoDB对事物的支持较弱;
2 传统的商业智能应用:特定问题的数据分析,多数据实体关联,涉及到复杂的、高度优化的查询方式;
3 使用sql方便的时候;数据结构相对固定,使用sql进行查询统计更加便利的时候;
什么时候使用MonGoDB
| 应用特征 | Yes / No |
|---|---|
| 应用不需要事务及复杂 join 支持 | 必须 Yes |
| 新应用,需求会变,数据模型无法确定,想快速迭代开发 | ? |
| 应用需要2000-3000以上的读写QPS(更高也可以) | ? |
| 应用需要TB甚至 PB 级别数据存储 | ? |
| 应用发展迅速,需要能快速水平扩展 | ? |
| 应用要求存储的数据不丢失 | ? |
| 应用需要99.999%高可用 | ? |
| 应用需要大量的地理位置查询、文本查询 | ? |
MonGoDB的简介
NoSQL:Not Only SQL ,本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。
MongoDB概念与RDMS概念对比



使用小黑窗口进行连接Windows版
mongo 否则 mongo --host=127.0.0.1 --port=27017 #验证是否启动成功 show dbs
使用Compass图形化界面
下载Download Center: Compass | MongoDB
直接安装就行
版本按照默认稳定版的来,选择自己电脑的操作系统,然后Download下载:

2、接着点击安装包安装,一路next即可(中途也可以更换安装路径):

3、根据安装路径找到执行文件,点击即可打开mongodb可视化界面:

4、打开之后界面如下,点击红框处填写数据库连接相关配置:

5、即出现如下界面,主要填写红框处必填项,port端口可以根据实际情况来,一般默认27017,此处都是按照默认的,最后点击按钮CONNECT进行数据库连接:


6、连接成功之后,会出现如下界面,显示出默认自带的三个数据库(admin、config、local):

MonGoDB执行添加语句加不上去的问题
官方的MongoDB 4.2系列驱动程序默认情况下启用重试写入。除非明确禁止重试写入,在升级到4.2系列驱动程序后,写入本地数据库的应用程序将遇到写入错误。
要禁用可重试写入,请在MongoDB集群的连接字符串中设置retryWrites=false
spring.data.mongodb.uri=mongodb://user:1@10.10.65.1:27017,10.10.65.2:27017,10.10.65.3:27017/test?retryWrites=false

浙公网安备 33010602011771号