redis和mongodb作业

redis

1、 string类型数据的命令操作:
    (1) 设置键值:
        set key1 5
    (2) 读取键值:
        get key1 "5"
    (3) 数值类型自增1:
        INCR key1 (integer) 6
    (4) 数值类型自减1:
        decr key1 (integer) 5
    (5) 查看值的长度:
        STRLEN key1 (integer) 1
    2、 list类型数据的命令操作:
    (1)对列表city插入Shanghai Suzhou Hangzhou 元素
            LPUSH city value Shanghai Suzhou Hangzhou (integer) 3
    (2)将列表city里的头部的元素移除
         lpop city "Hangzhou"
    (3)将name列表的尾部元素移除到number列表的头部
            lrange name 0 -1
            1) "wngwu"
            2) "lishi"
            3) "zhangshan"
 
            lrange numder 0 -1
            1) "7"
            2) "5"
            3) "3"
            4) "1"
            
             RPOPLPUSH name numder
            "zhangshan"
             lrange numder 0 -1
            1) "zhangshan"
            2) "7"
            3) "5"
            4) "3"
            5) "1"
        
    (4) 对一个已存在的列表插入新元素
        lrange name 0 -1
        1) "wngwu"
        2) "lishi"
        3) "rongqi"
 
    (5)查看list的值长度
        llen name (integer) 3
        llen numder (integer) 5
 
    3、 hash类型数据的命令操作:
     (1) 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三
        HMSET order id 1 customer_name 张三 OK
    (2) 创建一个hash表,表里的键值批量插入
        hmset order id 2 customer_name lishi
    (3) 获取order对应的map的所有key
         hgetall order
        1) "id"
        2) "1"
        3) "customer_name"
        4) "zhangshan"
    (4) 获取order对应的map的键值数量
        HVALS order
        1) "1"
        2) "zhangshan"
    (5) 获取order表里的id值
        hget order id "1“
    4、Keys相关的命令操作
    (1) 查看key是否存在

EXISTS KEY1 (integer) 1
 
    (2) 查找满足pattern的keys
KEYS *pattern* (empty list or set)
    (3) 查看key的超时时间
     TTL KEY1 (integer) -1
        PTTL KEY1 (integer) -1
    (4) 遍历key
        KEYS *
        1) "KEY"
        2) "numder"
        3) "order"
        4) "KEY2"
        5) "KEY1"
        6) "name"
        7) "key1"

mongodb

1. 创建一个数据库 名字grade

use grade;

switched to db grade

2. 数据库中创建一个集合名字 class

db.createCollection("class")

3. 集合中插入若干数据 文档格式如下

{name:'zhang',age;10,sex:'m',hobby:['a','b','c']}

hobby: draw  sing  dance  basketball football  pingpong  computer

> db.class.insert(

... [

... {name:'zhang',age:11,sex:'m',hobby:['draw','sing']},

... {name:'shan',age:5,sex:'m',hobby:['draw','computer']},

... {name:'li',age:6,sex:'m',hobby:['football','pingpong','computer']},

... {name:'shi',age:7,sex:'m',hobby:['draw']},

... {name:'wang',age:8,sex:'m',hobby:['sing','pingpong']},

... {name:'hong',age:9,sex:'f',hobby:['computer','pingpong']},

... {name:'ming',age:4,sex:'f',hobby:['pingpong']},

... {name:'yi',age:3,sex:'f',hobby:['dance']},

... {name:'feng',age:2,sex:'m',hobby:['sing','computer']},

... ],

...

... {ordered:true}

...

... )

BulkWriteResult({

"writeErrors" : [ ],

查找

查看班级所有人信息

db.class.find()

查看班级中年龄为8岁的学生信息

db.class.find({"age": 8})

查看年龄大于10岁的学生信息

db.class.find({"age":{$gt:10}})

查看年龄在 4---8岁之间的学生信息

db.class.find({"age": {$gt: 4, $lt: 7}})

找到年龄为6岁且为男生的学生

db.class.find({"age":6,"sex": "m"})

找到年龄小于7岁或者大于10岁的学生

db.getCollection('grade_1_2').find({$or: [{"age": {$lt: 7}}, {"age": {$gt: 10}}]})

找到年龄是8岁或者11岁的学生

db.class.find({"age": {$in: [8, 11]}})

找到兴趣爱好有两项的学生

db.class.find({"hobby": {$size: 2}})

找到兴趣爱好有draw的学生

db.class.find({"hobby": "draw"})

找到既喜欢画画又喜欢跳舞的学生

db.class.find({"hobby": {$all: ["draw", "dance"]}})

统计爱好有三项的学生人数

db.class.find({"hobby": {$size: 3}}).count()

找出本班年龄第二大的学生

db.class.find({}).sort({"age": -1}).limit(1).skip(1)

查看学生的兴趣范围

db.class.distinct('hobby')

将学生按年龄排序找到年龄最大的三个

db.class.find({}).sort({"age": -1}).limit(3)

删除所有 年级大于12或者小于4岁的学生

db.class.remove({$or:[{"age":{$lt:4}},{"age":{$gt:12}}]})

增加、更新、删除、统计

1. 将小红的年龄变为8岁 兴趣爱好变为 跳舞 画画

db.class.update({"name": "hong"}, {$set: {"age": 8, "hobby": ["dance", "draw"]}})

2. 追加小明兴趣爱好  唱歌

db.class.update({"name": "ming"}, {$push: {"hobby": "sing"}})

3. 小王兴趣爱好增加  吹牛 打篮球

db.class.update({"name": "wang"}, {$push: {"hobby": {$each: ["brag", "basketball"]}}})

4. 小李增加爱好,跑步和唱歌,但是不要和以前的重复

db.class.update({"name": "li"}, {$addToSet: {"hobby": {$each: ["sing", "basketball"]}}})

5. 该班所有同学年龄加1

db.class.update({}, {$inc: {"age": 1}}, {multi: true})

6. 删除小明的sex属性

db.class.update({"name": "ming"}, {$unset: {"sex": 1}})

7. 删除小李兴趣中的第一项

db.class.update({"name": "li"}, {$pop: {"hobby": -1}})

8. 将小红兴趣中的画画爱好删除

db.getCollection('class').update({"name": "hong"}, {$pull: {"hobby": "sing"}} )

增加分数域 score:{'chinese':88,'english':78,'math':98}

1. 按照性别分组统计每组人数

db.class.aggregate({"$group":{"_id":"$sex",count:{"$sum":1}}})

{ "_id" : null, "count" : 1 }

{ "_id" : "f", "count" : 1 }

{ "_id" : "m", "count" : 4 }

2. 按照姓名分组,过滤出有重名的同学

db.class.aggregate({"$group":{"_id":"$name",count:{"$sum":1}}},{$match:{count:{$gt:1}}})

3. 统计每名男生的语文成绩

db.class.aggregate([{$match:{sex:'m'}},{$project:{_id:0,name:1,'score.chinese':1}}])

4. 将女生按照英语分数降序排列

db.class.aggregate([{$match:{sex:'f'}},{$sort:{'score.english':-1}}])

你可能感兴趣的:(windows,数据库,mongodb,redis)