这是我参与「第四届青训营 」笔记创作活动的的第12天
文档 查询高级方法✌
-
排序
db.集合名.find().sort(JSON数据)- 键为要排序的列,值为1则升序,-1降序
-
limit 和skip 方法
db.集合名.find().sort().skip(数字).limit(数字)- skip指定跳过几条数据
- limit限制查询的数量
- 实现分页
-
聚合查询
db.集合名称.aggregate([{管道:{表达式}}...])- 常用管道
$group 将集合中的文档分组,用于统计结果 $match 过滤数据,只要输出符合条件的文档 $sort 聚合数据进一步排序 $skip 跳过指定文档数 $limit 限制集合数据返回文档数 .....$sum 总和 $sum:1同count表示统计 $avg 平均 $min 最小值 $max 最大值 ... -
索引
- 语法
-
创建索引语法:
db.集合名.createIndex(待创建索引的列[,额外选项]) -
参数:
- 待创建索引的列:{键:1,…,键:-1}
- 说明:1升序 -1降序 例如{age:1}表示创建age索引并按照升序的方式存储
- 额外选项:设置索引的名称或者唯一索引等
- 待创建索引的列:{键:1,…,键:-1}
-
删除索引语法:
- 全部删除:db.集合名.dropIndexes()
- 删除指定:db.集合名.dropIndex(索引名)
-
查看索引语法:db.集合名.getIndexes()
-
- 创建普通索引
db.c1.createIndex({name:1}) - 删除name索引
db.c1.dropIndex(‘name_1’) - 给name创建索引并起名lisi
db.c1.createIndex({name:1},{name:”lisi”}) - 创建复合/组合索引
- 说明:就是一次性给两个字段建立索引
- 语法:db.集合名.createIndex({键1:方式,键2:方式})
- 创建唯一索引
- db.集合名.createIndex(待添加索引的列,{unique:列名})
- 语法
权限机制
- 需求
我们在DOS窗口直接输入命令就可以登录数据库这在实战工作中绝对不允许
思考:如何解决
回答:使用权限机制,开启验证模式即可 - 创建账号
db.createUser({ "user":"账号", "pwd":"密码", "roles":[{ role:"角色", db:"所属数据库" }] }) - 角色种类
超级用户角色:root
数据库用户角色:read,readWrite
数据库管理角色:dbAdmin,userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMontitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase - 角色说明
root:只在admin数据库中可用。超级账号,超级权限
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除、查看统计或访问system.profile - 开启验证模式
- 操作步骤
- 添加超级管理员
- 退出卸载服务
- 重新安装需要输入账号密码的服务(注在原安装命令基础上加上--auth即可)
- 启动服务 -> 登录测试
- 添加超级管理员
mongo use admin db.createUser({ "user":"admin", "pwd":"admin888", "roles":[{ role:"root", db:"admin" }] })-
退出卸载服务
bin\mongod --remove 注意:DOS窗口必须用管理员身份运行 -
安装需要身份验证的MongoDB服务
bin\mongod --install --dpath 数据存放目录 --logpath log目录 --auth -
启动服务->登录测试
登录
- 操作步骤
备份数据库
- 备份数据库mongodump
备份所有数据:导出数据语法:mongodump -h -port -u -p -d -o 导出语法说明 -h host 服务器IP地址(一般不写 默认本机) -port 端口(一般不写 默认27017) -u user 账号 -p pwd 密码 -d database 数据库(注意:数据库不写则导出全局) -o open 备份到指定目录下mongodump -u admin -p admin888 -o C:\MongoDB\back
备份指定数据:mongodump -u shop1 -p admin888 -d shop -o C:\MongoDB\bak2 - 还原数据库mongostore
还原所有数据:还原数据语法:mongorestore -h -port -u -p -d --drop 备份数据目录 还原数据说明: -h -port -u -p -d 不写则还原全部数据库 --drop 先删除数据库再导入mongorestore -u admin -p admin888 –drop C:\MongoDB\bak
还原指定数据:mongorestore -u shop2 -p admin888 -d shop –drop C:\MongoDB\bak2\shop