文章目录
1.啥是mongodb
1.1 简介
MongDB是一个高性能,开源,无模式的文档型NosQL数据库,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等
主要功能特性:
- 文件存储格式BSON(一种json的扩展)
- 数据格式不受限了表的结构
- 支持动态查询
- 支持完全索引
- 支持复制(其主从复制)和故障恢复
- 使用高效的二进制数据存储,包括大型对象
- 自动处理碎片,支持扩展。
- 支持各种主流编程语言
- 内部支持Javascript
1.2 优势
- 查询速度快
- 高并发,高容量
- 高效存储和访问
- 高扩展性和高可用性
- 数据结构灵活,满足多种场景的数据
1.3 缺点
- 实现复杂的查询场景比较困难 (联表查询简直逆天的复杂…)
- 修改操作比较慢
1.4 使用场景
- 数据量大
- 读操作频繁, 但是修改操作不频繁
- 记录类数据,价值较低
- 对事务性要求不高
1.5 具体的应用场景如:
- 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
- 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
- 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来.
- 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
- 视频直播,使用 MongoDB 存储用户信息、点赞互动信息等。
1.6 基本概念
1.7 mongoDB存储
2. docker安装和启动 mongodb
-
拉取 mongodb 镜像 :
docker pull mongo:4.4
-
在本地创建存储容器数据的目录,比如我的电脑是这样的 :
mkdir -p /Users/afafa/Downloads/docker_about/mongodb/data
-
运行容器 :
docker run -itd --name mongo -v /Users/afafa/Downloads/docker_about/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth
-v: 将宿主机的/docker_volume/mongodb/data映射到容器的/data/db目录,将数据持久化到宿主机,以防止删除容器后,容器内的数据丢失
–auth:表示需要密码才能访问容器服务 -
docker ps 查看容器是否运行成功
-
登录mongo容器,并进入到【admin】数据库:
docker exec -it mongo mongo admin
-
创建一个用户,mongo 默认没有用户 :
db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
【user:‘root’ 】:设置用户名为root
【pwd:‘123456’】:设置密码为123456
【role:‘userAdminAnyDatabase’】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
【db: ‘admin’】:可操作的数据库
【‘readWriteAnyDatabase’】:赋予用户读写权限
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile -
连接mongo数据库
db.auth('root', '123456')
-
插入一条语句
db.user.insert({"name":"zhangsan","age":18})
-
查询刚刚插入的
db.user.find()
不出意外的话,操作是这样的:
navicat 连接 mongo
mongodb 基本操作命令
不写了,直接看大佬写的 : 传送门
或者看资料文档…
直接输入 db 可以查看当前在那个数据库