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

相关推荐
李慕婉学姐2 分钟前
Springboot面向电商的仓库管理系统05uc4267(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
imbackneverdie7 分钟前
AI工具如何重塑综述写作新体验
数据库·人工智能·考研·自然语言处理·aigc·论文·ai写作
Warren9838 分钟前
datagrip新建oracle连接教程
数据库·windows·云原生·oracle·容器·kubernetes·django
焦糖玛奇朵婷39 分钟前
扭蛋机小程序:线上扭蛋机模式发展新形势[特殊字符]
大数据·数据库·程序人生·小程序·软件需求
YMatrix 官方技术社区1 小时前
YMatrix 高可用详解:3 种镜像策略在节点宕机时表现有何不同?
运维·数据库·数据仓库·ai·数据库开发·数据库架构·ymatrix
嘟嘟w1 小时前
SQL注入是什么
数据库·sql·oracle
摇滚侠1 小时前
Redis 零基础到进阶,Redis 主从复制,笔记55-62
数据库·redis·笔记
surtr11 小时前
数据库基础(数据库原理和应用)
数据库·sql·mysql·oracle·database
张人玉1 小时前
c# DataSet 类
数据库·c#·dataset
想用offer打牌1 小时前
数据库大事务有什么危害(面试版)
数据库·后端·架构