文章目录
- 前言
- 一、在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 100OKSET key value EX 秒数 / PX 毫秒数 NX/XX②127.0.0.1:6379> SETNX key value0127.0.0.1:6379> SETNX key1 value1SETNX key value命令在设置成功时返回 1 设置失败时返回 0 ③127.0.0.1:6379> SETEX key2 100 valueOKSETEX key 秒数 value④127.0.0.1:6379> PSETEX KEY3 100 VALUEOKPSETEX 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"OK127.0.0.1:6379> GET KEYAHELLO CHINA、当我们再去get键值的时候,却发现什么都没有,因为这是设置的时间为10s,这个时候已经过期了。127.0.0.1:6379> GET KEYA
(3) 数值类型自增1:INCR KEY_NAME
127.0.0.1:6379> set mykey 20OK127.0.0.1:6379> incr mykey21
(4) 数值类型自减1:DECR KEY_NAME
127.0.0.1:6379> set mykey 20OK127.0.0.1:6379> decr mykey19
(5) 查看值的长度:SETRLEN KEY_NAME
127.0.0.1:6379> set key "this is my country china"OK127.0.0.1:6379> strlen key24
2、List类型数据的命令操作:
(1)对列表city插入元素:Shanghai Suzhou Hangzhou
127.0.0.1:6379> lrange city 0 8HangzhouSuzhouShanghaitianjingxianchengduChongqing
(2)将列表city里的头部的元素移除
127.0.0.1:6379> lpop cityHangzhou127.0.0.1:6379> lrange city 0 10SuzhouShanghaitianjingxianchengduchongqing127.0.0.1:6379>
(3)将name列表的尾部元素移除到number列表的头部
相关代码:RPOPLPUSH source destination
127.0.0.1:6379> lrange name 0 6MikkyCocoSimmonsTomSusan127.0.0.1:6379> rpoplpush name numberSusan127.0.0.1:6379> lrange name 0 -1MikkyCocoSimmonsTom127.0.0.1:6379> lrange number 0 -1Susan54321
(4) 对一个已存在的列表插入新元素
相关代码:LPUSHX key value
127.0.0.1:6379> lrange name 0 6MikkyCocoSimmonsTom127.0.0.1:6379> lpushx name Alice Brown6127.0.0.1:6379> lrange name 0 7BrownAliceMikkyCocoSimmonsTom
(5)查看list的值长度
相关代码:LLEN KEY_NAME
127.0.0.1:6379> llen name6127.0.0.1:6379> llen number6
3、举例说明list和hash的应用场景,每个至少一个场景
List的应用场景:论坛评论、秒杀、消息队列
Hash的应用场景:java里结构化的信息存储,例如用户个人信息(姓名、性别、兴趣爱好)用hash结构存储
二、MongoDB作业
1.准备工作
- 创建一个数据库 名字grade
MongoDB Enterprise > use gradeswitched to db grade
- 数据库中创建一个集合名字 class
MongoDB Enterprise > db.createCollection("class");{ "ok" : 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 } }