1. MongoDB简介
MongoDB 是一个文档数据库,旨在简化应用程序开发和扩展。
mongodb采用文档式存储结构,存储结构分为四个层次:键值对、文档、集合、数据库。
文档数据库存储结构的基本单位是键值对,具体包含数据和类型。键值对的数据包含键和值,键的格式一般为字符串,值的格式可以包含字符串、数值、数组、文档等类型。
文档是mongodb的核心概念,是数据的基本单元,文档的数据结构和json基本相同,实际存储时是bson(binary json)。
文档存储在集合中,一个集合是由一些文档构成的对象。文档类似于关系型数据库的行,集合类似于表。同一个集合可以插入不同格式的文档,但是通常情况下一个集合中的文档应该具有相关性。
数据库包含多个集合,通常一个应用的所有数据存储到同一个数据库。
mongodb的最大优点是非常适合层级式的数据存储。举个简单例子,比如A对象包含B对象,B对象包含C对象,关系型数据库应该会存三个表,查询时也需要三个表进行关联。而文档数据库可以把ABC三个对象按照层级关系作为一个文档存储到一个集合中,整存整取。
此外,mongodb支持分布式存储,可以满足海量数据的存储和查询。
缺点:1)不支持事务;2)key字段占用额外空间
参考文档:
- MongoDB官方文档
- MongoDB的文档存储结构
- mongodb与mysql相比的优缺点
- k8s 部署 mongodb 三种模式
- mongodb的认证(authentication)与授权(authorization)
- MongoDB数据导出导入
2. 常用命令
2.1. 登录数据库
1 | #mongo --host localhost --port 27017 |
其中authenticationDatabase参数指定认证数据库,如果不指定,默认是admin。这是因为Mongodb允许存在多个同名的用户存在,但同名的用户认证db必须不能相同。
2.2. 查看帮助
1 | help |
2.3. 操作数据库
1 | // 查看数据库 |
2.4. 操作表
1 | // 查看有哪些表 |
2.5. 操作用户和权限
1 | use admin |
2.6. 导出导入数据
2.6.1. 整库导出导入
1 | # 导出数据库 |
2.6.2. 单个集合导出导入
1 | # 导出数据集合 |
3. 重置密码
3.1. bin mongo重置密码
1、修改配置文件,取消用户验证
1 | vim /etc/mongod.conf |
注释掉:
1 | #security: |
2、重启mongo
1 | systemctl restart mongod |
3、重置密码
1 | mongo |
4、开启用户验证,重启mongo
3.2. docker mongo重置密码
1、启动重启密码容器
1 | docker run -it --name mongo-repair -d --volumes-from mongo mongo:4.2.11 --noauth |
2、进入容器
1 | docker exec -it mongo-repair /bin/bash |
3、重置密码
1 | mongo |
4、启动原容器
1 | docker stop mongo-repair |