MongoDB高级|青训营笔记

68 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第12天

文档 查询高级方法✌

  • 排序 db.集合名.find().sort(JSON数据)

    1. 键为要排序的列,值为1则升序,-1降序
  • limit 和skip 方法 db.集合名.find().sort().skip(数字).limit(数字)

    1. skip指定跳过几条数据
    2. limit限制查询的数量
    3. 实现分页
  • 聚合查询db.集合名称.aggregate([{管道:{表达式}}...])

    • 常用管道
    $group	将集合中的文档分组,用于统计结果
    $match	过滤数据,只要输出符合条件的文档
    $sort	聚合数据进一步排序
    $skip	跳过指定文档数
    $limit	限制集合数据返回文档数
    .....
    
    $sum	总和	$sum:1同count表示统计
    $avg	平均
    $min	最小值
    $max	最大值
    ...
    

    image-20210617152951159.png

    image-20210617153743216.png

    image-20210617154339848.png

  • 索引

    1. 语法
      • 创建索引语法:db.集合名.createIndex(待创建索引的列[,额外选项])

      • 参数:

        • 待创建索引的列:{键:1,…,键:-1}
          • 说明:1升序 -1降序 例如{age:1}表示创建age索引并按照升序的方式存储
        • 额外选项:设置索引的名称或者唯一索引等
      • 删除索引语法:

        • 全部删除:db.集合名.dropIndexes()
        • 删除指定:db.集合名.dropIndex(索引名)
      • 查看索引语法:db.集合名.getIndexes()

    2. 创建普通索引db.c1.createIndex({name:1})
    3. 删除name索引db.c1.dropIndex(‘name_1’)
    4. 给name创建索引并起名lisi db.c1.createIndex({name:1},{name:”lisi”})
    5. 创建复合/组合索引
      • 说明:就是一次性给两个字段建立索引
      • 语法:db.集合名.createIndex({键1:方式,键2:方式})
    6. 创建唯一索引
      • db.集合名.createIndex(待添加索引的列,{unique:列名})

权限机制

  1. 需求
    我们在DOS窗口直接输入命令就可以登录数据库这在实战工作中绝对不允许
    思考:如何解决
    回答:使用权限机制,开启验证模式即可
  2. 创建账号
         db.createUser({
             "user":"账号",
             "pwd":"密码",
             "roles":[{
                     role:"角色",
                     db:"所属数据库"
             }]
         })
    
  3. 角色种类

    超级用户角色:root
    数据库用户角色:read,readWrite
    数据库管理角色:dbAdmin,userAdmin
    集群管理角色:clusterAdmin、clusterManager、clusterMontitor、hostManager;
    备份恢复角色:backup、restore;
    所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  4. 角色说明

    root:只在admin数据库中可用。超级账号,超级权限
    read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除、查看统计或访问system.profile

  5. 开启验证模式
    1. 操作步骤
      1. 添加超级管理员
      2. 退出卸载服务
      3. 重新安装需要输入账号密码的服务(注在原安装命令基础上加上--auth即可)
      4. 启动服务 -> 登录测试
    1. 添加超级管理员
       mongo
       use admin
    
       db.createUser({
           "user":"admin",
           "pwd":"admin888",
           "roles":[{
                   role:"root",
                   db:"admin"
               }]
       })
    
    1. 退出卸载服务

       bin\mongod --remove
       注意:DOS窗口必须用管理员身份运行
      
    2. 安装需要身份验证的MongoDB服务

       bin\mongod --install --dpath 数据存放目录 --logpath log目录 --auth
      
    3. 启动服务->登录测试

      image-20210617174242195.png 登录 image-20210617174848439.png

备份数据库

  1. 备份数据库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
  2. 还原数据库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