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

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

db.createCollection("class")

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

{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"]}})

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

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

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

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

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

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

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

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

  1. 删除小明的sex属性

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

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

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

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

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 }

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

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

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

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

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

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

相关推荐
李慕婉学姐41 分钟前
Springboot智慧旅游管理系统6w63eon8(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·旅游
爱吃猫的鱼星2 小时前
SQL 分类
数据库·oracle
数数科技的数据干货3 小时前
从爆款到厂牌:解读游戏工业化的业务持续增长道路
运维·数据库·人工智能
熊猫在哪3 小时前
macos安装mysql
数据库·mysql·macos
q***46523 小时前
在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
数据库·django·sqlite
不光头强6 小时前
Spring框架的事务管理
数据库·spring·oracle
百***92028 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
q***76668 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
信仰_2739932439 小时前
Redis红锁
数据库·redis·缓存
人间打气筒(Ada)9 小时前
Centos7 搭建hadoop2.7.2、hbase伪分布式集群
数据库·分布式·hbase