NoSQL作业

MongoDB 基本操作作业

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

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


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

> db.createCollection("class")


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

{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")
        ]
}

4. 查找练习
查看班级所有人信息

> 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 })


增加、更新、删除作业 : 
使用之前的grade数据库
1. 将小红的年龄变为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" ] }

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

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


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

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


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

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


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

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


6. 删除小明的sex属性

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


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

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


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

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


使用之前的grade数据库增加分数域

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


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

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

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}}])
{ "name" : "lisi", "score" : { "chinese" : 88 } }
{ "name" : "zhangsan" }
{ "name" : "小李", "score" : { "chinese" : 88 } }
{ "name" : "小红", "score" : { "chinese" : 88 } }

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

> 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 } }

你可能感兴趣的:(MySQL,nosql,数据库)