• MongoDB命令汇总


    基础篇(能解决工作中80%的问题):

    1. MongoDB的概述、应用场景、下载方式、连接方式和发展历史等

    2. MongoDB数据类型、重要概念以及shell常用指令

    3. MongoDB文档的各种增加、更新、删除操作总结

    4. MongoDB各种查询操作总结

    5. MongoDB对列的各种操作总结

    6. MongoDB中的索引操作总结

    进阶篇:

    1. MongoDB聚合操作总结

    2. MongoDB的导入导出、备份恢复总结

    3. MongoDB的用户管理总结

    4. MongoDB复制(副本集)总结

    5. MongoDB 分片总结

    6. MongoDB 遇见 spark(进行整合)

    7. MongoDB内部的存储原理

    其它:

    1. python3操作MongoDB的各种案例

    2. MongoDB命令汇总

    一. MongoDB命令帮助系统

    看每个命令的详细用法,可以使用:db.listCommands()

    数据库操作更详细的帮助命令:db.help()

    对指定数据库的集合进行操作、管理和监控:db.mycoll.help()

    二. 基本命令及实例

    (一)基本命令

    显示当前数据库服务器上的数据库:show dbs

    切换到指定数据库pagedb的:use pagedb

    显示数据库中所有的集合:show collectionsshow tables

    查看数据库服务器的状态:db.serverStatus()

    查询指定数据库统计信息:db.stats()

    (二)常用DDL和DML

    了解 DML、DDL、DCL、DQL专业名称

    SQL语言共分为四大类:数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,数据查询语言DQL。

    DML(data manipulation language 数据操纵语言): 它们是UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
    
    DDL(data definition language 数据(库)定义语言): 主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
    
    DCL(Data Control Language 数据控制语言): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
    
    DQL(Data Query Language 数据查询语言):是数据库控制功能,包括 select 语句
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建数据库 mydatabase: use mydatabase; (只是切换,不是创建)

    创建集合 student
    db.createCollection("student",{capped:true,size:1000,max:100})

    试一下,max等于3或者size等于1,会怎么样?

    插入更新记录

    表(student)

     {_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]}
     {_id:2,classid:2,age:19,name:"little2",love:["play"]}
     {_id:3,classid:2,age:20,name:"little3"}
     {_id:4,classid:1,age:21,name:"little4"}
     {_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"}
     {_id:6,classid:2,age:23,name:"23little4"}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    插入

     db.student.save({_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]})
     db.student.save({_id:2,classid:2,age:19,name:"little2",love:["play"]})
     db.student.save({_id:3,classid:2,age:20,name:"little3"})
     db.student.save({_id:4,classid:1,age:21,name:"little4"})
     db.student.save({_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"})
     db.student.save({_id:6,classid:2,age:23,name:"23little4"})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    或者

    db.student.insert([
     {_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]},
     {_id:2,classid:2,age:19,name:"little2",love:["play"]},
     {_id:3,classid:2,age:20,name:"little3"},
     {_id:4,classid:1,age:21,name:"little4"},
     {_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"},
     {_id:6,classid:2,age:23,name:"23little4"},
     ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    总结:集合一旦启动封顶模式,当max或者是size超出,新数据覆盖旧数据

    查询一条记录/多条记录

    查询出name为little1的数据: db.student.find({name:"little1"})

    从第二条查寻,查出三条: db.student.find().skip(1).limit(3)

    查询大于19小于等于21:db.student.find({age:{$gt:19,$lte:21}})

    查询出age为奇数的数据(对2求余为1即为奇数):db.student.find({age:{$mod:[2,1]}})

    查询出存在opt字段的数据:db.student.find({opt:{$exists:true}})

    查询出不存在opt字段的数据:db.student.find({opt:{$exists:false}})

    查询出name不为little2的数据:db.student.find({name:{$ne:"little2"}})

    查询出age为16,18,19的数据:db.student.find({age:{$in:[16,18,19]}})

    查询出age不为16,18,19的数据:db.student.find({age:{$nin:[16,18,19]}})

    查询出love有三个的数据:db.student.find({love:{$size:3}})

    查询出name不是以litt开头的数据:db.student.find({name:{$not:/^litt.*/}})

    查询age=“”>20的数据:db.student.find({age:{$gt:20}})

    按age升序:db.student.find().sort({age:1})

    按age降序:db.student.find().sort({age:-1})

    查询数据条数:db.student.find().count()

    删除记录

    删除age为20的数据:db.student.remove({age:20});

    创建索引

    创建索引 age:db.student.ensureIndex({"age":1})

    查询索引:db.student.getIndexes()

    删除索引:db.student.dropIndex({"age" : 1})

    统计集合记录数:db.student.count()

    删除集合 student:db.student.drop()

    删除数据库 mydatabase:db.dropDatabase()

    (三)安全管理

    以安全认证模式启动

    添加用户

    安全认证

    (四)数据备份、恢复与迁移管理

    备份全部数据库

    备份指定数据库

    备份一个数据库中的某个集合

    恢复全部数据库

    恢复某个数据库的数据

    恢复某个数据库的某个集合的数据

    向MongoDB导入数据

    从MongoDB导出数据

    (五)远程连接管理

    基于mongo实现远程连接
    mongo —host 192.168.17.129 —port 27017

    (六)聚合
    计算各班级平均年龄

    db.student.aggregate([
     {
        $group: {
          _id: "$classid",
          avg_age: {
            $avg: "$age"
          }
        }
      }
    ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    计算全班级平均年龄

    db.student.aggregate([
     {
        $group: {
          _id: null,
          avg_age: {
            $sum: "$age"
          }
        }
      }
    ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (七) MapReduce

    计算各班级平均年龄

    分组统计(MapReduce):

    var mapfun = function(){emit(this.classid,this.age);}
    var reducefun = function(key, values){
        var total=0; 
        for(var i=0;i<values.length;i++){
            total += values[i];
        }
        return { classid: key, age_avg: total/values.length };
    }
    db.student.mapReduce(
          mapfun,
          reducefun,
          { out: "student_res" }
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    查询统计结果(分班级统计人数):db.student_res.find()

    各班级统计人数
    分组统计(MapReduce):

    var mapfun = function(){emit(this.classid,1);}
    var reducefun = function(key, values){
         return Array.sum(values);
    }
    db.student.mapReduce(
          mapfun,
          reducefun,
          { out: "student_sta" }
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    查询统计结果(分班级统计人数):db.student_sta.find();

  • 相关阅读:
    什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?Spring Boot 如何解决跨域问题 ?
    python字符串通过切片方式去掉最后一个字符
    从源码层解读react渲染原理
    110. 平衡二叉树
    vscode 源代码不能自动stage change
    Mediapipe 人体姿态估计专题(一) Blaze组件算法之Blazeface (带一个小开源分享给大家)
    计算机毕业设计JavaSteam游戏平台系统(源码+系统+mysql数据库+lw文档)
    路由器热备份
    for循环三种跳出循环的方法(retrun、continue、break)
    技术变现整体流程
  • 原文地址:https://blog.csdn.net/cui_yonghua/article/details/125627460