Redis,MongoDB基本操作练习题

文章目录

  • NoSQL练习:
    • Redis
      • String类型基本操作:
      • List类型基本操作:
      • hash类型基本操作:
    • MongoDB:
      • 创建一个数据库 名字grade:
      • 创建class集合:
      • 集合中插入若干数据:
      • 查看班级所有人信息:
      • 查看班级中年龄为8岁的学生信息:
      • 查看年龄大于10岁的学生信息:
      • 查看年龄在 4---8岁之间的学生信息:
      • 找到年龄为6岁且为男生的学生:
      • 找到年龄小于7岁或者大于10岁的学生:
      • 找到年龄是8岁或者11岁的学生:
      • 找到兴趣爱好有两项的学生:
      • 找到兴趣爱好有draw的学生:
      • 找到既喜欢画画又喜欢跳舞的学生:
      • 统计爱好有三项的学生人数:
      • 找出本班年龄第二大的学生:
      • 查看学生的兴趣范围:
      • 将学生按年龄排序找到年龄最大的三个:
      • 删除所有 年级大于12或者小于4岁的学生:
      • 将小红的年龄变为8岁 兴趣爱好变为 跳舞 画画:
      • 追加小明兴趣爱好 唱歌:
      • 小王兴趣爱好增加 吹牛 打篮球:
      • 小李增加爱好,跑步和唱歌,但是不要和以前的重复:
      • 该班所有同学年龄加1:
      • 删除小明的sex属性:
      • 删除小李兴趣中的第一项:
      • 将小红兴趣中的画画爱好删除:
      • 增加分数域 score:{'chinese':88,'english':78,'math':98}:
      • 按照性别分组统计每组人数:
      • 按照姓名分组,过滤出有重名的同学:
      • 统计每名男生的语文成绩:
      • 将女生按照英语分数降序排列:

语法不会可以在官网上查询MongoDB教程

NoSQL练习:

Redis

String类型基本操作:

#set
192.168.110.128:6379> set name 'harry'
OK
#get
192.168.110.128:6379> get name
"harry"#数字自增
192.168.110.128:6379> set num 2
OK
192.168.110.128:6379> get num
"2"
192.168.110.128:6379> INCR num
(integer) 3
192.168.110.128:6379> get num
"3"
#自减
192.168.110.128:6379> DECR num
(integer) 2
192.168.110.128:6379> get num
"2"#获取字符长度
192.168.110.128:6379> STRLEN name
(integer) 5
192.168.110.128:6379> get name
"harry"

List类型基本操作:

#对列表city插入元素:Shanghai Suzhou Hangzhou
192.168.110.128:6379> LPUSH city shanghai
(integer) 1
192.168.110.128:6379> LPUSH city suzhou
(integer) 2
192.168.110.128:6379> LPUSH city hangzhou
(integer) 3
#将列表city里的头部的元素移除
192.168.110.128:6379> LPOP city
"hangzhou"
#将name列表的尾部元素移除到number列表的头部
192.168.110.128:6379> RPOPLPUSH city number
"beijing"
192.168.110.128:6379> LINDEX number 0
"beijing"
#对一个已存在的列表插入新元素
192.168.110.128:6379> RPUSH  city beijing
(integer) 4
192.168.110.128:6379> LINDEX city -1
"beijing"
#查看list的值长度
192.168.110.128:6379> LLEN city
(integer) 3

hash类型基本操作:

#设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三
192.168.110.128:6379> HSET hp id 1 
OK
192.168.110.128:6379> HGET hp
1) "id"
2) "1"
#创建一个hash表,表里的键值批量插入
192.168.110.128:6379> HMSET hp2 id 1 name 'lisi' id 2 name 'wuwang'
OK
192.168.110.128:6379> HGETALL hp2
1) "id"
2) "2"
3) "name"
4) "wuwang"
#获取order对应的map的所有key
192.168.110.128:6379> HKEYS order
1) "id"
2) "name"
#获取order对应的map的键值数量
192.168.110.128:6379> HLEN order
(integer) 2
#获取order表里的id值
192.168.110.128:6379> HVALS order
1) "1"
2) "bob"
#查看key是否存在
192.168.110.128:6379> EXISTS name
(integer) 1
#查找满足pattern的keys
192.168.110.128:6379> KEYS name
1) "name"
#查看key的超时时间
192.168.110.128:6379> TTL name
(integer) -1
#遍历key
192.168.110.128:6379> KEYS *
1) "k2"
2) "name"
3) "hp"
4) "number"
5) "hp2"
6) "order"
7) "city"
8) "k1"
9) "num"

MongoDB:

创建一个数据库 名字grade:

> use grede
switched to db grede
#有则使用没有则创建

创建class集合:

> db.createCollection("class")

集合中插入若干数据:

文档格式如下
{name:'zhang',age;10,sex:'m',hobby:['a','b','c']}
hobby: draw  sing  dance  basketball football  pingpong  computer> db.class.insertMany([{name:'lisi',age:4,sex:'m',hobby:['dance','sing','draw']},{name:'wangwu',age:7,sex:'f',hooby:['sing','dance','computer']},{name:'zhangsan',age:6,sex:'m',hobby:['game','code','dance']}])
{"acknowledged" : true,"insertedIds" : [ObjectId("64b28a4ffb91465cc9ea745c"),ObjectId("64b28a4ffb91465cc9ea745d"),ObjectId("64b28a4ffb91465cc9ea745e")]
}

查看班级所有人信息:

> db.class.find()
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745c"), "name" : "lisi", "age" : 4, "sex" : "m", "hobby" : [ "dance", "sing", "draw" ] }
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745d"), "name" : "wangwu", "age" : 7, "sex" : "f", "hooby" : [ "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745e"), "name" : "zhangsan", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "dance" ] }

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

> db.class.find({age:8})
{ "_id" : ObjectId("64b28b7efb91465cc9ea745f"), "name" : "sunqi", "age" : 8, "sex" : "m", "hobby" : [ "dance", "computer", "draw" ] }

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

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

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

> db.class.find({age:{$gt:4,$lt:8}})
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745d"), "name" : "wangwu", "age" : 7, "sex" : "f", "hooby" : [ "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745e"), "name" : "zhangsan", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "dance" ] }

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

> db.class.find({age:6,sex:'m'})
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745e"), "name" : "zhangsan", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "dance" ] }

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

> db.class.find({$or: [{age:{$lt:7}},{age:{$gt:10}}]})
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745c"), "name" : "lisi", "age" : 4, "sex" : "m", "hobby" : [ "dance", "sing", "draw" ] }
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745e"), "name" : "zhangsan", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "dance" ] }

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

> db.class.find({$or: [{age:8},{age:11}]})
{ "_id" : ObjectId("64b28b7efb91465cc9ea745f"), "name" : "sunqi", "age" : 8, "sex" : "m", "hobby" : [ "dance", "computer", "draw" ] }

找到兴趣爱好有两项的学生:

db.class.find({hobby:{$size:2}})
{ "_id" : ObjectId("64b4b267324c94c22a9d0010"), "name" : "小李", "age" : 4, "sex" : "m", "hobby" : [ "dance", "sing" ] }

找到兴趣爱好有draw的学生:

> db.class.find({hobby:/^draw/})
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745c"), "name" : "lisi", "age" : 4, "sex" : "m", "hobby" : [ "dance", "sing", "draw" ] }
{ "_id" : ObjectId("64b28b7efb91465cc9ea745f"), "name" : "sunqi", "age" : 8, "sex" : "m", "hobby" : [ "dance", "computer", "draw" ] }

找到既喜欢画画又喜欢跳舞的学生:

> db.class.find({$and:[{hobby:/^draw/},{hobby:/^dance/}]})
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745c"), "name" : "lisi", "age" : 4, "sex" : "m", "hobby" : [ "dance", "sing", "draw" ] }
{ "_id" : ObjectId("64b28b7efb91465cc9ea745f"), "name" : "sunqi", "age" : 8, "sex" : "m", "hobby" : [ "dance", "computer", "draw" ] }

统计爱好有三项的学生人数:

> db.class.find({hobby:{$size:3}})
{ "_id" : ObjectId("64b4af4b324c94c22a9d000d"), "name" : "lisi", "age" : 4, "sex" : "m", "hobby" : [ "dance", "sing", "draw" ] }
{ "_id" : ObjectId("64b4af4b324c94c22a9d000f"), "name" : "zhangsan", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "dance" ] }
{ "_id" : ObjectId("64b4b267324c94c22a9d0012"), "name" : "小红", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "draw" ] }

找出本班年龄第二大的学生:

> db.class.find().sort({age:-1}).limit(1).skip(1)
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745d"), "name" : "wangwu", "age" : 7, "sex" : "f", "hooby" : [ "sing", "dance", "computer" ] }

查看学生的兴趣范围:

> db.class.distinct('hobby')
[ "dance", "draw", "sing", "code", "game" ]

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

> db.class.find().sort({age:-1}).limit(3)
{ "_id" : ObjectId("64b28b7efb91465cc9ea745f"), "name" : "sunqi", "age" : 8, "sex" : "m", "hobby" : [ "dance", "computer", "draw" ] }
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745d"), "name" : "wangwu", "age" : 7, "sex" : "f", "hooby" : [ "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64b28a4ffb91465cc9ea745e"), "name" : "zhangsan", "age" : 6, "sex" : "m", "hobby" : [ "game", "code", "dance" ] }

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

> db.class.remove({$or: [{age:{$lt:4}},{age:{$gt:12}}]})
WriteResult({ "nRemoved" : 0 })

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

> db.class.update({name:'小红'},{$set:{age:8,hobby:['dance','draw']}})
#RES
> db.class.find()
{ "_id" : ObjectId("64b4b267324c94c22a9d0012"), "name" : "小红", "age" : 8, "sex" : "m", "hobby" : [ "dance", "draw" ] }

追加小明兴趣爱好 唱歌:

> db.class.update({name:'小明'},{$push:{hobby:'sing'}})

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

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

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

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

该班所有同学年龄加1:

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

删除小明的sex属性:

> db.class.update({name:'小明'},{$unset:{sex:0}})

删除小李兴趣中的第一项:

db.class.update({name:'小李'},{$pop:{hobby:-1}})

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

> db.class.update({name:'小红'},{$pull:{hobby:'draw'}})

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

> db.class.update({},{$set:{score:{'chinese':88,'english':78,'math':98}}})

按照性别分组统计每组人数:

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

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

> db.class.aggregate([{$group:{_id:'$name',num:{$sum:1}}},{$match:{num:{$gt:1}}}])

统计每名男生的语文成绩:

> db.class.aggregate([{$match:{sex:'m'}},{$project:{_id:0,name:1,'score.chinese':1}}])
{ "name" : "lisi", "score" : { "chinese" : 88 } }
{ "name" : "zhangsan" }
{ "name" : "小李", "score" : { "chinese" : 88 } }
{ "name" : "小红", "score" : { "chinese" : 88 } }

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

> db.class.aggregate([{$match:{sex:'f'}},{$sort:{'score.english':-1}}])
{ "_id" : ObjectId("64b4af4b324c94c22a9d000e"), "name" : "wangwu", "age" : 8, "sex" : "f", "hooby" : [ "sing", "dance", "computer" ], "score" : { "chinese" : 88, "english" : 78, "math" : 98 } }

注:
文章有问题请评论或联系更正:wgq3135@163.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle绑定变量

一、绑定变量简介 首先理解一下OLTP系统为什么需要绑定变量? 变量绑定会使 OLTP系统 数据库中的SQL执行速度飞快,内存效率极高,减少资源消耗;不使用绑定变量可能会使 OLTP 数据库不堪重负,资源被SQL解析严重耗尽&…

【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

Java基础教程之多线程 上 🔹本节学习目标1️⃣ 线程与进程🔍关于多进程、多线程、并发与并行之间的概念关系? 2️⃣ 多线程实现2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 多线程两种实现方式的区别2.4 利用 Callable 接口实现多线程2.5 …

00_ubuntu_开发环境的搭建

ubuntu 的版本22.04 2023-07-21 1.卸载firefox dpkg --get-selections |grep firefox // 查看安装包的信息 sudo apt-get purge firefox firefox-locale-en firefox-locale-zh-hans // 卸载相应的包 2.下载google安装包并安装 wget https://dl.google.com/linux/direct/goo…

深度学习——过拟合和Dropout

基本概念 什么是过拟合? 过拟合(Overfitting)是机器学习和深度学习中常见的问题之一,它指的是模型在训练数据上表现得很好,但在未见过的新数据上表现较差的现象。 当一个模型过度地学习了训练数据的细节和噪声&#…

【多模态】17、CORA | 将 CLIP 使用到开集目标检测

文章目录 一、背景二、方法2.1 总体结构2.2 region prompting2.3 anchor pre-matching 三、效果 论文:CORA: Adapting CLIP for Open-Vocabulary Detection with Region Prompting and Anchor Pre-Matching 代码:https://github.com/tgxs002/CORA 出处…

Qt/C++音视频开发48-推流到rtsp服务器

一、前言 之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也没用,而…

Linux 学习记录54(ARM篇)

Linux 学习记录54(ARM篇) 本文目录 Linux 学习记录54(ARM篇)一、框图分析1. 芯片手册内部框图2. 操作GPIO过程 二、通过汇编完成GPIO操作1. 常用的汇编指令2. GPIO初始化流程3. 查找相关寄存器(1. RCC寄存器(2. GPIO寄存器>1. 模式配置寄存器>2. 输出模式配置寄存器>3…

Jenkins常用管理功能配置 - 插件管理

Jenkins插件介绍 Jenkins是一个流行的开源持续集成/持续交付(CI/CD)工具,它有大量的插件来扩展其功能。这些插件可以用于构建、测试、部署和监控软件项目。下面是一些常用的Jenkins插件及其简单介绍和使用方法: 1. Git插件:允许Jenkins从Gi…

vue2如何将页面生成 pdf 导出 html2Canvas + jspdf

1.引入两个依赖 npm i html2canvas npm i jspdf 2.在utils文件夹下新建html2pdf.js文件 import html2canvas from html2canvas; import jsPDF from jspdf export const htmlToPDF async (htmlId, title "报表", bgColor "#fff") > { let pdfDom do…

【LeetCode每日一题合集】2023.7.17-2023.7.23(离线算法 环形子数组的最大和 接雨水)

文章目录 415. 字符串相加(高精度计算、大数运算)1851. 包含每个查询的最小区间⭐⭐⭐⭐⭐解法1——按区间长度排序 离线询问 并查集解法2——离线算法 优先队列 874. 模拟行走机器人(哈希表 方向数组)918. 环形子数组的最大和…

P5095 [USACO12OPEN] Bookshelf S

P5095 [USACO12OPEN] Bookshelf S 文章目录 P5095 [USACO12OPEN] Bookshelf S题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路赛时 code别人code 题目描述 Farmer John 闲来无事的时候总喜欢坐下来看书。这些年来,他一共收集了 N N N 本书&#…

sentinel深入讲解流量控制/熔断降级

文章目录 sentinelsentinel介绍重要的核心概念引入依赖限流的规则熔断规则yaml 项目配置使用注解 SentinelResource讲解类的静态方法 sentinel sentinel介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构…

【深度学习之YOLO8】环境部署

目录 一、确定版本CUDA toolkit、cuDNN版本Python、PyTorch版本 二、安装Python下载环境变量验证安装 三、安装Anaconda安装环境变量验证安装创建conda虚拟环境常用命令 四、安装CUDA toolkit下载环境变量验证安装 五、配置cuDNN下载 六、安装PyTorch(torchtorchversiontorchau…

【AI】使用vscode编辑查看YOLOv8源码

1、下载vscode 官网地址:https://code.visualstudio.com/ 针对ubuntu点击下载deb安装包,默认下载地址如下,下载速度很慢,而且会下载失败,解决方法如下: 将“https://az764295.vo.msecnd.net”改为“https://vscode.cdn.azure.cn”后,下载会很快。 例如,将: https:…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 …

Java设计模式—软件设计原则和七大常用的设计模式

前言 设计模式是软件开发中常见问题的解决方案,它们是经过验证的并且经常被重复使用的设计模板。设计模式提供了一套通用的解决方案,帮助开发人员构建高质量、可维护和可扩展的代码。设计模式并不是特定于某种编程语言,而是面向对象编程范式…

机器学习深度学习——随机梯度下降算法(及其优化)

在我们没有办法得到解析解的时候,我们可以用过梯度下降来进行优化,这种方法几乎可以所有深度学习模型。 关于优化的东西,我自己曾经研究过智能排班算法和优化,所以关于如何找局部最小值,以及如何跳出局部最小值的一些基…

RUST腐蚀基因种植

RUST腐蚀基因种植 试验地址:www.xiaocao.cloud RUST基因: RUST基因计算器,腐蚀基因计算器,前后端分离架构,前端目录/resouce/ui/rust,欢迎大佬评价,

无涯教程-HTML Event Reference

当用户访问您的网站时,他们会执行诸如单击文本和图像以及给定的链接,将鼠标悬停在事物上等操作。这些都是JavaScript称为事件的Example。 我们可以用Javascript或vbscript编写事件处理程序,并可以将这些事件处理程序指定为事件标签属性的值。 HTML 4.01规范定义了19个事件属性…

算法笔记(java)——回溯篇

回溯算法解决问题最有规律性,借用一下卡哥的图: 只要遇到上述问题就可以考虑使用回溯,回溯法的效率并不高,是一种暴力解法,其代码是嵌套在for循环中的递归,用来解决暴力算法解决不了的问题,即…