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

相关推荐
就改了25 分钟前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking
东风破13728 分钟前
达梦数据库实战:备份恢复与数据迁移全攻略(实例初始化、服务注册、路径迁移)
数据库·chrome
SelectDB技术团队43 分钟前
2026 SelectDB AI 产品发布会:Agent Native 数据基础设施能力全景发布
数据库·人工智能·agent·apache doris·selectdb
爱吃羊的老虎1 小时前
【数据库】模块一:数据库基础与关系代数
数据库
dishugj1 小时前
iSCSI + Multipath + ASM:Oracle RAC 共享存储技术链详解
数据库·oracle
yoothey2 小时前
MySQL事务机制解析 - 面试高分知识点
数据库·mysql·面试
xufengzhu2 小时前
第三方 Python 库 redis-py + hiredis 的使用
开发语言·redis·python
Lkstar2 小时前
万字长文Query改写与多路召回实战|从HyDE到RRF融合,召回率提升22%的完整方案
数据库·人工智能·llm
IT新视界3 小时前
星环科技ArgoDB:基于一体化架构构建数据全生命周期安全底座
数据库·科技·安全·架构
峥无3 小时前
MySQL DML 操作(CRUD)总结
数据库·mysql