一、聚合查询 aggregate
语法
1 | db.集合名称.aggregate([ |
常用管道
1 | $group 将集合中的文档分组,用于统计结果 |
常用表达式
1 | $sum 总和 $sum:1同count表示统计 |
二、连表查询 lookup
1 | $lookup:{ |
三、索引
- 说明:索引是一种排序好的便于快速查询的数据结构
- 作用:帮助数据库高效的查询数据
优点
- 提高数据查询的效率,降低数据库的 IO 成本
- 通过索引对数据进行排序,降低数据排序的成本,降低 CPU 的消耗
缺点
- 占用磁盘空间
- 大量索引影响 SQL 语句效率,因为每次插入和修改数据都需要更新索引
语法
db.集合名称.createIndex(待创建索引的列[额外选项]) //新增索引
db.集合名称.dropIndex(索引名) // 删除索引
db.user.createIndex({name:1}) // 1 升序,-1 降序
创建唯一索引 unique
分析索引(explain)
分析添加索引的效率
- 语法:db.集合名称.find().explain(“executionStats”)
选择规则(如何选择合适的列创建索引)
- 为常做条件、排序、分组的字段建立索引
- 选择唯一性索引
- 选择较小的数据列,为较长的字符串使用前缀索引 (ps:索引文件更小)
四、权限机制
使用权限机制,开启验证模式,要求进入数据库必须输入账号密码登录
语法
1 | //创建账号 |
内置角色列表
| 角色 | 权限描述 |
|---|---|
read |
可以读取指定数据库中任何数据。 |
readWrite |
可以读写指定数据库中任何数据,包括创建、重命名、删除集合。 |
readAnyDatabase |
可以读取所有数据库中任何数据(除了数据库 config 和 local 之外)。 |
readWriteAnyDatabase |
可以读写所有数据库中任何数据(除了数据库 config 和 local 之外)。 |
userAdminAnyDatabase |
可以在指定数据库创建和修改用户(除了数据库 config 和 local 之外)。 |
dbAdminAnyDatabase |
可以读取任何数据库以及对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作(除了数据库 config 和 local 之外)。 |
dbAdmin |
可以读取指定数据库以及对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作。 |
userAdmin |
可以在指定数据库创建和修改用户。 |
clusterAdmin |
可以对整个集群或数据库系统进行管理操作。 |
backup |
备份 MongoDB 数据最小的权限。 |
restore |
从备份文件中还原恢复 MongoDB 数据(除了 system.profile 集合)的权限。 |
root |
超级账号,超级权限 |
五、开启数据库访问权限
1、创建管理员用户
1 | use admin |
2、启用身份验证
1、修改 mongod.conf 文件,启用身份验证:
打开MongoDB的配置文件 mongod.conf,添加或修改以下内容以启用身份验证:
1 | security: |
2、重启MongoDB服务:
应用配置更改后,重启MongoDB服务。
1 | mongod --config /path/to/mongod.conf |
3、创建数据库用户
- 使用管理员账号连接到MongoDB实例
- 切换到目标数据库并创建普通用户
1 | use mydatabase |
六、备份还原
导出:mongodump [options]
还原:mongorestore [options]
options:
-u 用户名
-p 密码
-o 指定备份目录
–drop 先删除数据库再导入
注:如果数据库有单独的管理员,需要使用数据库管理员来操作
七、常用命令
1 | // window下停止和启动mongodb服务的命令 |

