关于你欠缺的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
0127.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
Tom127.0.0.1:6379> lpushx name Alice Brown
6127.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 } }

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

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

相关文章

数组的递归筛选

数组递归筛选 根据一个值筛选出来通过 includes 递归 const options [{name: "ikun",options: [{name: "YAY11",},],},{name: "YAY",}, ];function findValue(orgOptions,val) {let newArr1 []orgOptions.forEach(item>{if(item.options…

网络爬虫-网易易盾滑块验证码

首先打开易盾官网,依次单击“在线体验”和“滑块拼图”选项,出现如下图所示的滑块验证码,滑动后发现Network面板成功抓包。 如图所示 其中主要的加密参数可以看出来就是acToken以及cb 我们接着下断点往下走 我通过上图可以看到 acToken&#…

实例018 类似windows xp的程序界面

实例说明 在Windows XP环境下打开控制面板,会发现左侧的导航界面很实用。双击展开按钮,导航栏功能显示出来,双击收缩按钮,导航按钮收缩。下面通过实例介绍此种主窗体的设计方法。运行本例,效果如图1.18所示。 ​编辑…

适合小公司的自动化部署脚本

背景(偷懒) 在小小的公司里面,挖呀挖呀挖。快挖不动了,一件事重复个5次,还在人肉手工,身体和心理就开始不舒服了,并且违背了个人的座右铭:“偷懒”是人类进步的第一推动力。 每次想…

ROS:nodelet

目录 一、前言二、概念三、作用四、使用演示4.1案例简介4.2nodelet 基本使用语法4.3内置案例调用 五、nodelet实现5.1需求5.2流程5.3准备5.4创建插件类并注册插件5.5构建插件库5.6使插件可用于ROS工具链5.6.1配置xml5.6.2导出插件 5.7执行 一、前言 ROS通信是基于Node(节点)的…

Rsync(二十七)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 二、特性 三、应用场景 四、数据的同步方式 五、rsync传输模式 六、rsync应用 七、rsync 命令 1. 格式 1.1 作为远程命令 1. 2 作为rsync服务 2. 选项 3.…

分布式定时任务组件:XXL-JOB

一、GitHub源码地址 https://github.com/xuxueli/xxl-job 二、部署文档 参考:https://blog.csdn.net/qq798867485/article/details/131415408 三、初始化数据库SQL 1、xxl_job_user XxlJob-用户管理 2、xxl_job_group XxlJob-执行器管理 3、xxl…

〖码银送书第三期〗《Python机器学习:基于PyTorch和Scikit-Learn》

前言 近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来,机器学习和深度学习迅猛发展&#xf…

性能测试:Jmeter压测过程中的短信验证码读取

目录 问题背景 解决思路 实现方法 1. 建立JDBC连接 2. 使用JDBC请求获取验证码 3. 使用正则将验证码提取并使用 总结: 问题背景 现如今国内的大部分软件或者网站应用,普遍流行使用短信业务,比如登录、注册以及特定的业务通知等。 对…

基于区块链技术的元宇宙游戏将成为时代浪潮的弄潮儿

区块链技术作为互联网新兴技术逐渐走进公众视野,其中心化、分布式、公开透明、不可篡改等技术特性使其可以在各个领域大展拳脚。区块链技术在金融、公益、文化、物流、农业等领域带来了全新的思维视角、全新的场景与全新的解决方案,无疑是移动互联网之后…

【Matlab】智能优化算法_麻雀搜索算法SSA

【Matlab】智能优化算法_麻雀搜索算法SSA 1.背景介绍2.数学模型3.文件结构4.伪代码5.详细代码及注释5.1 Get_Functions_details.m5.2 main.m5.3 SSA.m 6.运行结果7.参考文献 1.背景介绍 麻雀通常是群居的鸟类,有很多种类。它们分布在世界的大部分地区,喜…

GSV6201替代方案|CS5466设计资料|CS5466原理图|typec转HDMI_8k方案芯片

GSV6201是一款高性能、低功耗、高性能的,USB Type-C备用模式显示端口1.4至HDMI 2.1转换器。通过集成增强型微控制器,GSV6201创造了一个经济高效的解决方案提供了上市时间优势。显示端口接收机支持高达32.4Gbps(HBR3,4通道&#xf…