关于你欠缺的NoSQL中的redis和mongoDB


文章目录

  • 前言
  • 一、在string list hash结构中,每个至少完成5个命令,包含插入 修改 删除 查询,list 和hash还需要增加遍历的操作命令
    • 1、STRING类型
    • 2、List类型数据的命令操作:
    • 3、举例说明list和hash的应用场景,每个至少一个场景
  • 二、MongoDB作业
    • 1.准备工作
    • 2. 查找
    • 增加、更新、删除、统计
    • 3、增加分数域 score:{'chinese':88,'english':78,'math':98}


前言

不知不觉已经进入NoSQL的学习来了,那么什么是NoSQL呢?NoSQL的数据分类有哪一些呢?
一、什么是NoSQL呢?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系
型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这
些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

二、NoSQL的数据分类有哪一些呢?

1、键值数据库
相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
应用:内容缓存
优点:扩展性好、灵活性好、大量写操作时性能高
缺点:无法存储结构化信息、条件查询效率较低
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和
Memcached)
2、列族数据库
相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
应用:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、
Facebook(HBase)
3、文档数据库
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
应用:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好、灵活性高、复杂性低、数据结构灵活
缺点:缺乏统一的查询语言
使用者:百度云数据库(MongoDB)、SAP(MongoDB)
4、图形数据库
相关产品:Neo4J、OrientDB、InfoGrid、GraphDB
应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱
缺点:复杂性高、只能支持一定的数据规模
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

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

REDIS中一些常用的命令
LPUSH/LPUSHX:LPUSH是将值插入到链表的头部,LPUSHX是检测这个链表是否存在,如果存在的话会插入头部,如果不存在会忽略这个数据
RPUSH/RPUSHX:将值插入到链表的尾部。同上,位置相反
LPOP:移除并获取链表中的第一个元素。
RPOP:移除并获取链表中最后一个元素。
LTRIM:保留指定区间内的元素。
LLEN:获取链表的长度。
LSET:用索引设置链表元素的值。
LINDEX:通过索引获取链表中的元素。
LRANGE:获取链表指定范围内的元素。

1、STRING类型

(1) 设置键值:SET用于添加键值对,值 为string类型

①127.0.0.1:6379> set key value EX 100
OK
SET key value EX 秒数 / PX 毫秒数 NX/XX

②127.0.0.1:6379> SETNX key value
0

127.0.0.1:6379> SETNX key1 value
1
SETNX key value
命令在设置成功时返回 1   设置失败时返回 0 

③127.0.0.1:6379> SETEX key2 100 value
OK
SETEX key 秒数 value

④127.0.0.1:6379> PSETEX KEY3 100 VALUE
OK
PSETEX key 毫秒数 value

⑤127.0.0.1:6379> TTL KEY4
-2
⑥127.0.0.1:6379> PTTL KEY4
-2


(2) 读取键值:GET KEY_NAME

127.0.0.1:6379> SETEX KEYA 10 "HELLO CHINA"
OK
127.0.0.1:6379> GET KEYA
HELLO CHINA
、
当我们再去get键值的时候,却发现什么都没有,因为这是设置的时间为10s,这个时候已经过期了。
127.0.0.1:6379> GET KEYA

(3) 数值类型自增1:INCR KEY_NAME

127.0.0.1:6379> set mykey 20
OK
127.0.0.1:6379> incr mykey
21

(4) 数值类型自减1:DECR KEY_NAME


127.0.0.1:6379> set mykey 20
OK
127.0.0.1:6379> decr mykey
19

(5) 查看值的长度:SETRLEN KEY_NAME

127.0.0.1:6379> set key "this is my country china"
OK
127.0.0.1:6379> strlen key
24

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

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

127.0.0.1:6379> lrange city 0 8
Hangzhou
Suzhou
Shanghai
tianjing
xian
chengdu
Chongqing

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

127.0.0.1:6379> lpop city
Hangzhou
127.0.0.1:6379> lrange city 0 10
Suzhou
Shanghai
tianjing
xian
chengdu
chongqing
127.0.0.1:6379> 

(3)将name列表的尾部元素移除到number列表的头部
相关代码:RPOPLPUSH source destination

127.0.0.1:6379> lrange name 0 6
Mikky
Coco
Simmons
Tom
Susan
127.0.0.1:6379> rpoplpush name number
Susan
127.0.0.1:6379> lrange name 0 -1
Mikky
Coco
Simmons
Tom
127.0.0.1:6379> lrange number 0 -1
Susan
5
4
3
2
1

(4) 对一个已存在的列表插入新元素
相关代码:LPUSHX key value

127.0.0.1:6379> lrange name 0 6
Mikky
Coco
Simmons
Tom


127.0.0.1:6379> lpushx name Alice Brown
6

127.0.0.1:6379> lrange name 0 7
Brown
Alice
Mikky
Coco
Simmons
Tom

(5)查看list的值长度
相关代码:LLEN KEY_NAME

127.0.0.1:6379> llen name
6
127.0.0.1:6379> llen number
6

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

List的应用场景:论坛评论、秒杀、消息队列

Hash的应用场景:java里结构化的信息存储,例如用户个人信息(姓名、性别、兴趣爱好)用hash结构存储

二、MongoDB作业

1.准备工作

  1. 创建一个数据库 名字grade
MongoDB Enterprise > use grade
switched to db grade
  1. 数据库中创建一个集合名字 class
MongoDB Enterprise > db.createCollection("class");
{ "ok" : 1 }
  1. 集合中插入若干数据 文档格式如下
    {name:‘zhang’,age;10,sex:‘m’,hobby:[‘a’,‘b’,‘c’]}
    hobby: draw sing dance basketball football pingpong computer
    在这里插入图片描述

2. 查找

1、查看班级所有人信息
代码用法:DB.数据库.FIND()

MongoDB Enterprise > db.class.find();
{ "_id" : ObjectId("64a54599a1a01a01ed810f6b"), "name" : "小刚", "age" : 18, "sex" : "m", "hobby" : [ "football", "pingpong", "baskerball", "computer" ] }
{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing", "baskerball" ] }
{ "_id" : ObjectId("64a545d7a1a01a01ed810f6d"), "name" : "小珍", "age" : 19, "sex" : "f", "hobby" : [ "draw", "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64a5461da1a01a01ed810f6e"), "name" : "小政", "age" : 21, "sex" : "m", "hobby" : [ "sing", "basketball", "computer" ] }
{ "_id" : ObjectId("64a5463ea1a01a01ed810f6f"), "name" : "小芳", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing" ] }
{ "_id" : ObjectId("64a5466fa1a01a01ed810f70"), "name" : "小超", "age" : 21, "sex" : "m", "hobby" : [ "pingpong", "sing", "football" ] }
{ "_id" : ObjectId("64a54689a1a01a01ed810f71"), "name" : "小莱", "age" : 22, "sex" : "f", "hobby" : [ "pingpong", "dance", "football" ] }
MongoDB Enterprise > db.class.insert({name:"小猛",age:20,sex:'m',hobby:['basketball','dance','draw']})
WriteResult({ "nInserted" : 1 })

2、查看班级中年龄为18岁的学生信息

MongoDB Enterprise > db.class.find({age:18})
{ "_id" : ObjectId("64a54599a1a01a01ed810f6b"), "name" : "小刚", "age" : 18, "sex" : "m", "hobby" : [ "football", "pingpong", "baskerball", "computer" ] }
{ "_id" : ObjectId("64a54935a1a01a01ed810f78"), "name" : "小白", "age" : 18, "sex" : "f", "hobby" : [ "dance", "sing" ] }
{ "_id" : ObjectId("64a54957a1a01a01ed810f79"), "name" : "小哲", "age" : 18, "sex" : "m", "hobby" : [ "computer", "football", "basketball" ] }

3、查看年龄大于20岁的学生信息

MongoDB Enterprise > db.class.find({age:{$gt:20}})
{ "_id" : ObjectId("64a5461da1a01a01ed810f6e"), "name" : "小政", "age" : 21, "sex" : "m", "hobby" : [ "sing", "basketball", "computer" ] }
{ "_id" : ObjectId("64a5466fa1a01a01ed810f70"), "name" : "小超", "age" : 21, "sex" : "m", "hobby" : [ "pingpong", "sing", "football" ] }
{ "_id" : ObjectId("64a54689a1a01a01ed810f71"), "name" : "小莱", "age" : 22, "sex" : "f", "hobby" : [ "pingpong", "dance", "football" ] }
{ "_id" : ObjectId("64a548e4a1a01a01ed810f73"), "name" : "小刘", "age" : 21, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a5490aa1a01a01ed810f76"), "name" : "小粉", "age" : 23, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }

4、查看年龄在 18-21岁之间的学生信息

MongoDB Enterprise > db.class.find({age:{$gte:18,$lte:21}})
{ "_id" : ObjectId("64a54599a1a01a01ed810f6b"), "name" : "小刚", "age" : 18, "sex" : "m", "hobby" : [ "football", "pingpong", "baskerball", "computer" ] }
{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing", "baskerball" ] }
{ "_id" : ObjectId("64a545d7a1a01a01ed810f6d"), "name" : "小珍", "age" : 19, "sex" : "f", "hobby" : [ "draw", "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64a5461da1a01a01ed810f6e"), "name" : "小政", "age" : 21, "sex" : "m", "hobby" : [ "sing", "basketball", "computer" ] }
{ "_id" : ObjectId("64a5463ea1a01a01ed810f6f"), "name" : "小芳", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing" ] }
{ "_id" : ObjectId("64a5466fa1a01a01ed810f70"), "name" : "小超", "age" : 21, "sex" : "m", "hobby" : [ "pingpong", "sing", "football" ] }
{ "_id" : ObjectId("64a546bba1a01a01ed810f72"), "name" : "小猛", "age" : 20, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548e4a1a01a01ed810f73"), "name" : "小刘", "age" : 21, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548f0a1a01a01ed810f74"), "name" : "小霞", "age" : 20, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a54935a1a01a01ed810f78"), "name" : "小白", "age" : 18, "sex" : "f", "hobby" : [ "dance", "sing" ] }
{ "_id" : ObjectId("64a54957a1a01a01ed810f79"), "name" : "小哲", "age" : 18, "sex" : "m", "hobby" : [ "computer", "football", "basketball" ] }

5、找到年龄为20岁且为男生的学生

MongoDB Enterprise > db.class.find({age:20,sex:'m'})
{ "_id" : ObjectId("64a546bba1a01a01ed810f72"), "name" : "小猛", "age" : 20, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }

6、找到年龄小于20岁或者大于21岁的学生

MongoDB Enterprise > db.class.find({$or:[{age:{$lt:20}},{age:{$gt:21}}]})
{ "_id" : ObjectId("64a54599a1a01a01ed810f6b"), "name" : "小刚", "age" : 18, "sex" : "m", "hobby" : [ "football", "pingpong", "baskerball", "computer" ] }
{ "_id" : ObjectId("64a545d7a1a01a01ed810f6d"), "name" : "小珍", "age" : 19, "sex" : "f", "hobby" : [ "draw", "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64a54689a1a01a01ed810f71"), "name" : "小莱", "age" : 22, "sex" : "f", "hobby" : [ "pingpong", "dance", "football" ] }
{ "_id" : ObjectId("64a548ffa1a01a01ed810f75"), "name" : "小绿", "age" : 17, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a5490aa1a01a01ed810f76"), "name" : "小粉", "age" : 23, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a54926a1a01a01ed810f77"), "name" : "小青", "age" : 17, "sex" : "m", "hobby" : [ "dance", "draw", "sing" ] }
{ "_id" : ObjectId("64a54935a1a01a01ed810f78"), "name" : "小白", "age" : 18, "sex" : "f", "hobby" : [ "dance", "sing" ] }
{ "_id" : ObjectId("64a54957a1a01a01ed810f79"), "name" : "小哲", "age" : 18, "sex" : "m", "hobby" : [ "computer", "football", "basketball" ] }

7、找到年龄是18岁或者21岁的学生

MongoDB Enterprise > db.class.find({$or:[{age:18},{age:21}]})
{ "_id" : ObjectId("64a54599a1a01a01ed810f6b"), "name" : "小刚", "age" : 18, "sex" : "m", "hobby" : [ "football", "pingpong", "baskerball", "computer" ] }
{ "_id" : ObjectId("64a5461da1a01a01ed810f6e"), "name" : "小政", "age" : 21, "sex" : "m", "hobby" : [ "sing", "basketball", "computer" ] }
{ "_id" : ObjectId("64a5466fa1a01a01ed810f70"), "name" : "小超", "age" : 21, "sex" : "m", "hobby" : [ "pingpong", "sing", "football" ] }
{ "_id" : ObjectId("64a548e4a1a01a01ed810f73"), "name" : "小刘", "age" : 21, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a54935a1a01a01ed810f78"), "name" : "小白", "age" : 18, "sex" : "f", "hobby" : [ "dance", "sing" ] }
{ "_id" : ObjectId("64a54957a1a01a01ed810f79"), "name" : "小哲", "age" : 18, "sex" : "m", "hobby" : [ "computer", "football", "basketball" ] }

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

MongoDB Enterprise > db.class.find({$where:"this.hobby.length == 2"})
{ "_id" : ObjectId("64a5463ea1a01a01ed810f6f"), "name" : "小芳", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing" ] }
{ "_id" : ObjectId("64a54935a1a01a01ed810f78"), "name" : "小白", "age" : 18, "sex" : "f", "hobby" : [ "dance", "sing" ] }

9、找到兴趣爱好有draw的学生

MongoDB Enterprise > db.class.find({hobby:'draw'})
{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing", "baskerball" ] }
{ "_id" : ObjectId("64a545d7a1a01a01ed810f6d"), "name" : "小珍", "age" : 19, "sex" : "f", "hobby" : [ "draw", "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64a5463ea1a01a01ed810f6f"), "name" : "小芳", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing" ] }
{ "_id" : ObjectId("64a546bba1a01a01ed810f72"), "name" : "小猛", "age" : 20, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548e4a1a01a01ed810f73"), "name" : "小刘", "age" : 21, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548f0a1a01a01ed810f74"), "name" : "小霞", "age" : 20, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548ffa1a01a01ed810f75"), "name" : "小绿", "age" : 17, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a5490aa1a01a01ed810f76"), "name" : "小粉", "age" : 23, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a54926a1a01a01ed810f77"), "name" : "小青", "age" : 17, "sex" : "m", "hobby" : [ "dance", "draw", "sing" ] }

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

MongoDB Enterprise > db.class.find({hobby:{$all:['dance','draw']}})
{ "_id" : ObjectId("64a545d7a1a01a01ed810f6d"), "name" : "小珍", "age" : 19, "sex" : "f", "hobby" : [ "draw", "sing", "dance", "computer" ] }
{ "_id" : ObjectId("64a546bba1a01a01ed810f72"), "name" : "小猛", "age" : 20, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548e4a1a01a01ed810f73"), "name" : "小刘", "age" : 21, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548f0a1a01a01ed810f74"), "name" : "小霞", "age" : 20, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548ffa1a01a01ed810f75"), "name" : "小绿", "age" : 17, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a5490aa1a01a01ed810f76"), "name" : "小粉", "age" : 23, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a54926a1a01a01ed810f77"), "name" : "小青", "age" : 17, "sex" : "m", "hobby" : [ "dance", "draw", "sing" ] }

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

MongoDB Enterprise > db.class.find({$where:"this.hobby.length == 3"})
{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing", "baskerball" ] }
{ "_id" : ObjectId("64a5461da1a01a01ed810f6e"), "name" : "小政", "age" : 21, "sex" : "m", "hobby" : [ "sing", "basketball", "computer" ] }
{ "_id" : ObjectId("64a5466fa1a01a01ed810f70"), "name" : "小超", "age" : 21, "sex" : "m", "hobby" : [ "pingpong", "sing", "football" ] }
{ "_id" : ObjectId("64a54689a1a01a01ed810f71"), "name" : "小莱", "age" : 22, "sex" : "f", "hobby" : [ "pingpong", "dance", "football" ] }
{ "_id" : ObjectId("64a546bba1a01a01ed810f72"), "name" : "小猛", "age" : 20, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548e4a1a01a01ed810f73"), "name" : "小刘", "age" : 21, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548f0a1a01a01ed810f74"), "name" : "小霞", "age" : 20, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a548ffa1a01a01ed810f75"), "name" : "小绿", "age" : 17, "sex" : "m", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a5490aa1a01a01ed810f76"), "name" : "小粉", "age" : 23, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "_id" : ObjectId("64a54926a1a01a01ed810f77"), "name" : "小青", "age" : 17, "sex" : "m", "hobby" : [ "dance", "draw", "sing" ] }
{ "_id" : ObjectId("64a54957a1a01a01ed810f79"), "name" : "小哲", "age" : 18, "sex" : "m", "hobby" : [ "computer", "football", "basketball" ] }

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

MongoDB Enterprise > db.class.find({}).sort({age:-1}).skip(1).limit(1)
{ "_id" : ObjectId("64a54689a1a01a01ed810f71"), "name" : "小莱", "age" : 22, "sex" : "f", "hobby" : [ "pingpong", "dance", "football" ] }

13、查看学生的兴趣范围

MongoDB Enterprise > db.class.distinct('hobby')
[
	"baskerball",
	"computer",
	"football",
	"pingpong",
	"draw",
	"sing",
	"dance",
	"basketball"
]

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

MongoDB Enterprise > db.class.find({},{_id:0}).sort({age:-1}).limit(3)
{ "name" : "小粉", "age" : 23, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ] }
{ "name" : "小莱", "age" : 22, "sex" : "f", "hobby" : [ "pingpong", "dance", "football" ] }
{ "name" : "小政", "age" : 21, "sex" : "m", "hobby" : [ "sing", "basketball", "computer" ] }

15、删除所有 年级大于20或者小于18岁的学生

MongoDB Enterprise > db.class.deleteMany({$or:[{age:{$gt:20}},{age:{$lt:5}}]})
{ "acknowledged" : true, "deletedCount" : 5 }

增加、更新、删除、统计

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

MongoDB Enterprise > db.class.update({'name':'小红'},{$set:{'age':8,'hobby':['dance','draw']}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
MongoDB Enterprise > db.class.find({'name':'小红'})
{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 8, "sex" : "f", "hobby" : [ "dance", "draw" ] }

2、追加小白兴趣爱好 唱歌

MongoDB Enterprise > db.class.update({'name':'小白'},{$push:{'hobby':'sing'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

3、小哲兴趣爱好增加 吹牛 打篮球

MongoDB Enterprise > db.class.update({'name':'小哲'},{$push:{'hobby':{$each:['basketball','吹牛']}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

MongoDB Enterprise > db.class.update({'name':'小珍'},{$addToSet:{hobby:{$each:['running','sing']}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

MongoDB Enterprise > db.class.update({},{$inc:{age:1}},false,true)
WriteResult({ "nMatched" : 10, "nUpserted" : 0, "nModified" : 10 })

6、删除小白的sex属性

MongoDB Enterprise > db.class.update({'name':'小白'},{$unset:{sex:0}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

7、删除小哲兴趣中的第一项

MongoDB Enterprise > db.class.update({'name':'小哲'},{$pop:{hobby:-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

MongoDB Enterprise > db.class.update({'name':'小红'},{$pull:{hobby:'draw'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

MongoDB Enterprise > db.class.find({'name':'小红'})
{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 9, "sex" : "f", "hobby" : [ "dance" ] }

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

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

MongoDB Enterprise > db.class.aggregate([ { $group: { _id: "$sex", count: { $sum: 1 } } }])
{ "_id" : null, "count" : 1 }
{ "_id" : "f", "count" : 4 }
{ "_id" : "m", "count" : 5 }

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

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

3、统计每名男生的语文成绩

MongoDB Enterprise > db.class.aggregate([{$match:{sex:'m'}},{$project:{_id:0,name:1,'score.chinese':1}}])
{ "name" : "小刚", "score" : { "chinese" : 80 } }
{ "name" : "小猛", "score" : { "chinese" : 89 } }
{ "name" : "小绿", "score" : { "chinese" : 78 } }
{ "name" : "小青", "score" : { "chinese" : 75 } }
{ "name" : "小哲", "score" : { "Chinese" : 80 } }

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

MongoDB Enterprise > db.class.aggregate([{$match:{sex:'f'}},{$sort:{'score.english':-1}}])

{ "_id" : ObjectId("64a5459ca1a01a01ed810f6c"), "name" : "小红", "age" : 9, "sex" : "f", "hobby" : [ "dance" ], "score" : { "chinese" : 95, "english" : 90, "math" : 85 } }
{ "_id" : ObjectId("64a545d7a1a01a01ed810f6d"), "name" : "小珍", "age" : 20, "sex" : "f", "hobby" : [ "draw", "sing", "dance", "computer", "running" ], "score" : { "chinese" : 93, "english" : 88, "math" : 94 } }
{ "_id" : ObjectId("64a548f0a1a01a01ed810f74"), "name" : "小霞", "age" : 21, "sex" : "f", "hobby" : [ "basketball", "dance", "draw" ], "score" : { "chinese" : 92, "english" : 85, "math" : 76 } }
{ "_id" : ObjectId("64a5463ea1a01a01ed810f6f"), "name" : "小芳", "age" : 21, "sex" : "f", "hobby" : [ "draw", "sing" ], "score" : { "chinese" : 86, "english" : 80, "math" : 90 } }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

经济和行政手段使双高企业降低能耗总量和能耗强度,提高能源利用效率-安科瑞黄安南

摘要 2022年6月29日工信部、发改委、财政部、生态环境部、国资委、市场监管总局六部门联合下发《关于印发工业能效提升行动计划的通知》(工信部联节〔2022〕76号,以下简称《行动计划》),主要目的是为了提高工业领域能源利用效率&…

黄皮书-线接触热弹流润滑 Fortran+Matlab转译代码

原Fortran代码有错误,进行了修改,数值上差别不大。根据Fortran代码转的Matlab,可以完美运行,但是因为精度问题有差异,只能说趋势是一致的。 需要私我-资源里只是Fortran运行结果

Rdkit|分子3D构象生成与优化

github; 地址 文章目录 Rdkit|分子3D构象生成与优化构象生成算法概述基于距离(distance-based)代码示例 距离几何算法生成3D结构距离几何ETKDG生成3D构象距离几何ETKDG生成多构象将Conformer类转为Mol类手动对齐 距离几何ETKDGMMFF生成3D构象距离几何ETK…

4.日志分布式-ELK

文章目录 日志分布式-ELK概念可以添加的其它组件filebeat 结合 logstash 带来好处为什么要使用 ELK缓存和Fluentd完整日志系统基本特征ELK 的工作原理 部署Elasticsearchjdk环境和防火墙配置安装Elasticsearch修改配置文件优化内存参数启动程序并测试效果安装 Elasticsearch-he…

ThunderScope开源示波器

简介 4CH,1GSa/S 开源示波器。前端很简洁,BUF802LMH6518,ADC是HMCAD1511,用Xilinx A7 FPGA进行控制,数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网,强。 设计日志:h…

AR气象博物馆模拟体验提升青少年认知

国际气象节主要目的是唤起人们对气象工作的重视和热爱。近年来,极端天气频发,人们需要提高警惕,AR气象远程普利用ar技术特有的沉浸式的体感互动,通过模拟演练提升体验者的安全防范意识和求生技巧。 系统结合VR虚拟现实、AR增强现实…

VSCode下载安装(保姆级--一步到胃)

前言 Visual Studio Code(简称“VSCode” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且…

机械臂的雅克比矩阵推导

1. 线速度和角速度的递推通式推导 p i p i − 1 R i − 1 r i − 1 , i i − 1 \mathbf{p}_{i}\mathbf{p}_{i-1}\mathbf{R}_{i-1} \mathbf{r}_{i-1, i}^{i-1} pi​pi−1​Ri−1​ri−1,ii−1​ p i − 1 \mathbf{p}_{i-1} pi−1​是 { i − 1 } \{i-1\} {i−1}坐标系的原点的…

[PHP]解决exec执行unzip出现中文文件名乱码的问题

查看Linux编码,如下图可看出Linux编码是zh_CN.UTF-8 问题截图: 以下代码都会产生乱码 exex(unzip -d /xxx /x/test.zip); exex(unzip -O zh_CN.UTF-8 -d /xxx /x/test.zip); exex(unzip -I zh_CN.UTF-8 -d /xxx /x/test.zip); 解决方法: e…

大模型开发(五):实现Jupyter本地调用OpenAI API

全文共3000余字,预计阅读时间约15分钟 | 满满干货,建议收藏! 大模型开发(五):实现Jupyter本地调用OpenAI API OpenAI作为本轮大语言模型技术进步的先驱,其系列大型模型在效果上一直保持着领先。其推出的各类模型如文本…

Ubuntu搭建docker+laradock

使用Ubuntu搭建dockerlaradock windows 下载Ubuntu工具二选一 链接:https://pan.baidu.com/s/154K6MKdFZxWqaTn2q-6MSQ 提取码:06lc https://www.jianshu.com/p/b7e11d0dbe8c借鉴地址:https://zhuanlan.zhihu.com/p/547169542 备注&#x…

JS-27 前端数据请求方式;HTTP协议的解析;JavaScript XHR、Fetch的数据请求与响应函数;前端文件上传XHR、Fetch;安装浏览器插件FeHelper

目录 1_前端数据请求方式1.1_前后端分离的优势1.2_网页的渲染过程 – 服务器端渲染1.3_网页的渲染过程 – 前后端分离 2_HTTP协议的解析2.1_HTTP概念2.2_网页中资源的获取2.3_HTTP的组成2.4_HTTP的版本2.5_HTTP的请求方式2.6_HTTP Request Header2.7_HTTP Response响应状态码 3…

成为机器人工程师需要学习那些技术

机器人工程师是未来比较吃香的工作岗位,要成为机器人工程师,ChatGPT的回答是,建议你需要学习以下技术: 1、机械工程:了解机械结构、运动学和动力学,以及机械设计和制造方面的知识。 2、电子工程&#xff1…

opencv -11 图像运算之按位逻辑运算(图像融合图像修复和去除)

按位逻辑运算是一种对图像进行像素级别的逻辑操作的方法,使用OpenCV的按位逻辑运算函数可以对图像进行位与(AND)、位或(OR)、位非(NOT)和位异或(XOR)等操作。 通俗点就是…

i.MX6ULL(十六) linux 设备驱动

一 简介 Linux设备驱动是指驱动Linux内核与硬件设备进行通信的软件模块。设备驱动通常分为两类:字符设备驱动和块设备驱动。 设备驱动的主要功能包括: 设备初始化:在系统启动时,设备驱动需要初始化相应的硬件设备,设…

8、链路层以太网协议,ARP协议32

网络层IP协议描述了通信中的起点到终点,但是数据不是飞过去的,是经过了大量的中间节点转发完成的。 一、以太网协议 1、MAC地址 物理硬件地址,是每一块网卡在出厂时设定的地址,固定且不可修改(早期,现在可…

密码学学习笔记(十五):ECDSA - 椭圆曲线数字签名算法

椭圆曲线数字签名算法是DSA的一种椭圆曲线变体,它发明的初衷只是避免使用Schnorr签名的专利。椭圆曲线数字签名算法依赖于验证器中的私钥和主机用于验证验证器的公钥。它的缺点和DSA一样,它也没有提供安全性证明。 椭圆曲线算法 DSS(数字签…

【Vue面试题系列】四

VNode有哪些属性? Vue内部定义的Vnode对象包含了以下属性: __v_isVNode: true,内部属性,有该属性表示为Vnode __v_skip: true,内部属性,表示跳过响应式转换,reactive转换时会根据此属性进行判断…

Django实现接口自动化平台(十四)测试用例模块Testcases序列化器及视图【持续更新中】

相关文章: Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django…

一条命令解决端口占用,开启mysql

注:最后有面试挑战,看看自己掌握了吗 文章目录 端口占用开启mysql 端口占用 如果发现 8080 端口被占用可以使用命令 sudo lsof -t -i:8080 | sudo xargs kill -9 查找并杀死相应的进程。 开启mysql 打开命令提示符或终端。如果您已经安装了MySQL&…