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

相关推荐
vvvae123416 分钟前
分布式数据库
数据库
雪域迷影36 分钟前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹1 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人1 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky2 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa2 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮3 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长3 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
立秋67893 小时前
Python的defaultdict详解
服务器·windows·python
Indigo_code4 小时前
【数据结构】【链表代码】合并有序链表
数据结构·windows·链表