Mongo命令练习题

    如果想要得到更多,而且每个命令的详细用法,可以使用上面列出的db.listCommands()查询。

    数据库操作更详细的帮助命令

    db.help()

    对指定数据库的集合进行操作、管理和监控,可以通过查询db.mycoll.help()获取到:

    db.mycoll.help()

    基本命令及实例

    (一)基本命令

    • 显示当前数据库服务器上的数据库

    show dbs

    • 切换到指定数据库pagedb的,可以在此管理pagedb数据库以及其中的集合等

    use pagedb

    • 显示数据库中所有的集合(collection)

    show collections

    • 查看数据库服务器的状态

    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 数据(库)定义语言): 主要的命令有、ALTERDROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

    DCL(Data Control Language 数据控制语言): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

    DQL(Data Query Language 数据查询语言):是数据库控制功能,包括 select 语句

    • 创建数据库 mydatabase

    use mydatabase; (只是切换,不是创建)

    • 创建集合 student

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

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

    • 插入更新记录

      表(student)

    插入

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

    或者

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

    db.student.find().skip(1).limit(3)

    查询出19

    db.student.find({age:{$gt:19,$lte:21}})

    ="" 查询出age为奇数的数据(对2求余为1即为奇数)="" =""

    db.student.find({age:{$mod:[2,1]}})

    ="" 查询出存在opt字段的数据="" $exists=""

    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的数据="" $in=""

    db.student.find({age:{$in:[16,18,19]}})

    ="" 查询出age不为16,18,19的数据="" =""

    db.student.find({age:{$nin:[16,18,19]}})

    ="" 查询出love有三个的数据="" $size=""

    db.student.find({love:{$size:3}})

    ="" 查询出name不是以litt开头的数据="" $not=""

    db.student.find({name:{$not:/^litt.*/}})

    ="" 查询age="">20的数据

    db.student.find({age:{$gt:20}})

    按age升序

    按age降序

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

    查询数据条数

    db.student.find().count()

    • 删除记录

    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

    (六)聚合

    • 计算各班级平均年龄
    1. {
    2. $group: {
    3. _id: "$classid",
    4. $avg: "$age"
    5. }
    6. }
    7. }
    8. ]
    9. )
    • 计算全班级平均年龄

    (七) MapReduce

    • 计算各班级平均年龄

    分组统计(MapReduce):

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

    查询统计结果(分班级统计人数)

    db.student_res.find()

    分组统计(MapReduce):

    查询统计结果(分班级统计人数)