文章目录
- 一、MongoDB 简介
- 基本信息
- 特点
- 内部组件
- 二、MongoDB 部署
- 1. 安装依赖
- 2. 解压部署并配置环境变量
- 3. 修改配置文件以及启动服务
- 4.数据库权限管理
- 三、MongoDB 管理
- 1. 角色权限
- 2. 操作命令
- 用户管理命令
- 常用命令(Mongo4.2.8)
- 数据库相关
- 用户相关
- 集合 Collection 相关

一、MongoDB 简介
基本信息
MongoDB 是由 C++ 语言编写的,基于分布式文件存储的开源数据库系统。在高负载情况下,可通过添加更多节点保证服务器性能。它旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为文档,数据结构由键值(key=>value)对组成,其文档类似于 JSON 对象,字段值可以包含其他文档、数组及文档数组。
- 官方文档:https://docs.mongodb.com/manual/?_ga=2.57024426.1834178963.1557492386 - 816165234.155749238
- 官方下载地址:https://www.mongodb.com/download-center/community
特点
- 高性能:提供高性能的数据持久性,支持嵌入式数据模型,减少数据库系统上的 I/O 操作;索引支持快速查询,可包含嵌入式文档和数组中的键。
- 丰富的语言查询:支持丰富的查询语言,用于读写操作(CRUD)、数据汇总、文本搜索和地理空间索引。
- 高可用性:复制工具(副本集)提供自动故障转移和数据冗余。
- 水平可扩展性:分片功能可将数据分布在一组计算机上,提供可扩展性。
- 支持多种存储引擎:如 WiredTiger 存储引擎、MMAPv1 存储引擎和 InMemory 存储引擎。
内部组件
- MongoDB Drivers:官方 MongoDB 客户端库,提供 C、C++、C#、Java、Node.JS、Perl、PHP、Python、Ruby 和 Scala 驱动程序的参考指南。
- MongoDB Stitch:为开发人员提供访问 MongoDB 和其他后端服务的 API,保持 MongoDB 功能和灵活性,支持细粒度的数据访问控制配置。
- MongoDB Atlas:MongoDB 在云中部署、操作和扩展的最佳方式,适用于 AWS、Azure 和 Google Cloud Platform,可轻松迁移数据,零停机。
- MongoDB Cloud Manager:用于管理 MongoDB 部署的软件包,提供监控和备份功能,帮助用户优化群集并降低操作风险。
- MongoDB Charts:可快速简单地创建 MongoDB 可视化图表。
- MongoDB Connector for BI:允许用户使用 SQL 创建查询,并使用现有的关系商业智能工具(如 Tableau、MicroStrategy 和 Qlik)对 MongoDB Enterprise 数据进行可视化、图形化和报告。
- MongoDB Compass:通过随机抽样文档子集,为用户提供 MongoDB 模式的图形视图,降低对数据库的影响并快速产生结果。
- MongoDB Spark Connector:可访问所有使用 MongoDB 数据集的 Spark 库,支持 SQL 分析、流式传输、机器学习和图形 API,也可与 Spark Shell 配合使用。
二、MongoDB 部署
1. 安装依赖
yum install libcurl openssl -y
2. 解压部署并配置环境变量
tar xvf mongodb-linux-x86_64-rhel70-4.4.6.tgz
mv mongodb-linux-x86_64-rhel70-4.4.6 /usr/local/mongodb
mkdir /usr/local/mongodb/{conf,data,logs}vi /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
3. 修改配置文件以及启动服务
cd /usr/local/mongodb/
vi conf/mongodb.conf
port=39096
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
bind_ip=0.0.0.0
#auth=true ### 开启登录认证,配置完用户名密码在进行开启# 启动服务
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongodb.conf --logappend# 连接 mongodb
mongo --port 39096 -uaexcom --authenticationDatabase trade -p
4.数据库权限管理
// 创建并切换数据库
use trade
// 创建用户并授权数据库
db.createUser({user:"aexcom",pwd:"xxx=",roles:[{role:"readWrite",db:"trade"}]})// 验证是否登录成功
use trade
db.auth("aexcom","xxx=")
三、MongoDB 管理
1. 角色权限
- Read:允许用户读取指定数据库。
- readWrite:允许用户读写指定数据库。
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile。
- userAdmin:允许用户向 system.users 集合写入,可在指定数据库里创建、删除和管理用户。
- clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限。
- readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限。
- userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限。
- dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
- root:只在 admin 数据库中可用,超级账号,拥有超级权限。
2. 操作命令
用户管理命令
db.auth() // 将用户验证到数据库。
db.changeUserPassword() // 更改现有用户的密码。
db.createUser() // 创建一个新用户。
db.dropUser() // 删除单个用户。
db.dropAllUsers() // 删除与数据库关联的所有用户。
db.getUser() // 返回有关指定用户的信息。
db.getUsers() // 返回有关与数据库关联的所有用户的信息。
db.grantRolesToUser() // 授予用户角色及其特权。
db.removeUser() // 已过时,从数据库中删除用户。
db.revokeRolesFromUser() // 从用户中删除角色。
db.updateUser() // 更新用户数据。
常用命令(Mongo4.2.8)
数据库相关
// 切换/创建数据库
use "dbname";
// 查询所有数据库
show dbs;
// 查看当前使用的数据库
db.getName();
// 查看数据库版本
db.version();
// 查看当前 db 的链接地址
db.getMongo();
用户相关
// 创建普通用户(创建用户 cg,对 mytest 数据库读写权限)
db.createUser({user:"cg",pwd:"lianshi",roles:[{role:"readWrite",db:"mytest"}]})
// 删除用户
db.dropUser("yonghu")
// 修改用户密码
db.updateUser("cg",{pwd:"123456"})
// 进入数据 mytest,用户名密码认证
db.auth("cg","lianshi");
集合 Collection 相关
// 获得数据聚合(表)
db.getCollectionNames();
// 集合(表)插入数据
db.student.insert({"id":"2","name":"yxy"})
// 查询数据
db.student.find();
// 查询唯一字段值
db.student.distinct("name");
// 查询 name = yxy 的记录
db.student.find({"name":"yxy"});
// 插入 int32 字段类型的数据
db.student.insert({"id":NumberInt(1234567),"name":"hu"});
// 插入 int64 字段类型数据
db.student.insert({"age":NumberLong(22),"name":"hu"});
// 插入 Decimal 字段类型数据
db.student.insert({"va":NumberDecimal("22.3"),"name":"hu"});
// 查询语句
db.student.find({}).projection({}).sort({_id:-1}).limit(100)
// 删除(集合)表
db.student.drop();