数据库MySQL练习 NOSQL和mongdb(6)

作业一:string list hash结构中,每个至少完成5个命令,
包含插入 修改 删除 查询,list 和hash还需要增加遍历的操作命令
	

1、 string类型数据的命令操作:

(1) 设置键值:

127.0.0.1:6379> set name hamu   //设置键name的值为'hamu'
OK

(2) 读取键值:

127.0.0.1:6379> get name   //获取键'name'的值
"hamu"

(3) 数值类型自增1:

127.0.0.1:6379> set name1 1  //设置键name1 值为 1
OK

127.0.0.1:6379> get name1
"1"

127.0.0.1:6379> incr name1   //设置键name1自增
(integer) 2

(4) 数值类型自减1:

127.0.0.1:6379> decr name1   //设置键name1 自减
(integer) 1

(5) 查看值的长度:

127.0.0.1:6379> strlen name1
(integer) 1
127.0.0.1:6379> strlen name
(integer) 4

2、 list类型数据的命令操作:

(1)对列表city插入元素:Shanghai Suzhou Hangzhou

127.0.0.1:6379> lpush city Shanghai Suzhou Hangzhou //插入元素shanghai suzhou hangzhou
(integer) 3


127.0.0.1:6379> lrange city 0 -1   //将返回列表"city"中的所有元素
1) "Hangzhou"
2) "Suzhou"
3) "Shanghai"

(2)将列表city里的头部的元素移除

127.0.0.1:6379> lpop city   //移除并返回列表的头部元素
"Hangzhou"
127.0.0.1:6379> lrange city 0 -1
1) "Suzhou"
2) "Shanghai"

(3)将name列表的尾部元素移除到number列表的头部

127.0.0.1:6379> rpoplpush city haha   //将列表city的尾部元素移除并添加到haha列表的头部
"Shanghai"


127.0.0.1:6379> lrange haha 0 -1
1) "Shanghai"
2) "c"
3) "b"
4) "a"

(4) 对一个已存在的列表插入新元素

127.0.0.1:6379> rpush city Chongqing  //将元素"Chongqing"插入到列表"city"的尾部。
(integer) 2

127.0.0.1:6379> lrange city 0 -1
1) "Suzhou"
2) "Chongqing"

(5)查看list的值长度

127.0.0.1:6379> llen city
(integer) 2

3、 hash类型数据的命令操作:

(1) 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三

127.0.0.1:6379> hset order id 1    
(integer) 1
127.0.0.1:6379> hset order customer_name 张三
(integer) 1

(2) 创建一个hash表,表里的键值批量插入

127.0.0.1:6379> hmset order id 2 customer_name 李四
OK

(3) 获取order对应的map的所有key

127.0.0.1:6379> HKEYS order
1) "id"
2) "customer_name"

(4) 获取order对应的map的键值数量

127.0.0.1:6379> HLEN order
(integer) 2

(5) 获取order表里的id值

127.0.0.1:6379> hget order id
"2"

4、Keys相关的命令操作

(1) 查看key是否存在

127.0.0.1:6379> exists name  //检查给定的key是否存在于数据库中,存在为1,不存在为0
(integer) 1

(2) 查找满足pattern的keys

127.0.0.1:6379> keys pattern
(empty list or set)
127.0.0.1:6379> keys name
1) "name"
127.0.0.1:6379> keys nama1
(empty list or set)
127.0.0.1:6379> keys order
1) "order"

(3) 查看key的超时时间

127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> ttl name1
(integer) -1
127.0.0.1:6379> ttl order
(integer) -1
//TTL keyname,返回以秒为单位的key的剩余生存时间,
-1表示永久存在,-2表示key不存在。

(4) 遍历key

127.0.0.1:6379> scan 0
1) "0"
2) 1) "city"
   2) "order"
   3) "name"
   4) "name1"
   5) "haha"
//使用游标为0的位置开始扫描数据库中的键

举例说明list和hash的应用场景,每个至少一个场景

List的应用场景:

待办事项列表:使用List来管理待办事项,每个事项作为列表的一个元素,可以按照添加顺序进行排序和处理。
例如:用户可以将需要完成的任务添加到待办事项列表中,然后依次处理每个事项,将完成的事项从列表中移除。


Hash的应用场景:

用户身份信息存储:使用Hash来存储用户的身份信息,例如用户名、密码、电子邮件等,以便进行身份验证和用户管理。
例如:在一个Web应用程序中,可以使用Hash来存储用户的身份信息,通过用户名作为Key,包含密码、电子邮件等信息的Field和Value来索引和存储用户的身份数据。

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

MongoDB Enterprise > use grade    
switched to db grade
//创建数据库,如果没有则创建,否则切换到数据库


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

MongoDB Enterprise > db.createCollection("class")
{ "ok" : 1 }


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


{name:'zhang',age;10,sex:'m',hobby:['a','b','c']}
hobby: draw  sing  dance  basketball football  pingpong  computer

MongoDB Enterprise > db.calss.insertMany([
... {name:'zhang' ,age:10 ,sex:'m' ,hobby:['a','b','c'] },
... {name:'lisi' ,age:12,sex:'f' ,hobby:['draw','sing','dance'] },
... {name:'wangwu' ,age:8,sex:'m' ,hobby:['basketball'] },
... {name:'dingzhen' ,age:16 ,sex:'m' ,hobby:['football','pingpong','computer'] }
... ])
{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("64b5e5250b42d51f6f17ba20"),
		ObjectId("64b5e5250b42d51f6f17ba21"),
		ObjectId("64b5e5250b42d51f6f17ba22"),
		ObjectId("64b5e5250b42d51f6f17ba23")
	]
}
Mon

4.查找

查看班级所有人信息

db.calss.find()


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

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


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

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


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

db.class.find({age:{ $gte:4,$lte:8}})


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

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


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

db.class.find({
  $or: [
    { age: { $gt: 10 } },
    { age: { $lt: 7 } }
  ]
})


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

db.class.find({
$or:[
{age:8},
{age: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}.skip(1)).limit(1)


查看学生的兴趣范围

db.class.distinct('hobby')


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

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


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

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


5. 增加、更新、删除、统计


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

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


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

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


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

db.class.update({name:"xiaowang"},{$pushAll:{hobby:['吹牛','basketball']}})


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

db.class.update({name:"xiaoli"},{$addToSet:{hobby:{$each:['running','sing']}}})


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

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


6. 删除小明的sex属性

db.class.update({name:"xiaoming"},{$unset:{sex:0}})


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

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


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

db.class.update({name:"xiaohong"},{$pull:{hobby:'draw'}})


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

MongoDB Enterprise > db.class.insert({score:{'chinese':88,'english':78,'math':98}})
WriteResult({ "nInserted" : 1 })


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

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


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

db.class.aggregate([{$group:{_id:'$name',num:{$sum:1}}},{$match:{num:{$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}}])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值