mongodb练习---增删改查

环境:

 


 

 

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


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


 

3. 集合中插入若干数据 文档格式如下
{name:'zhang',age;10,sex:'m',hobby:['a','b','c']}
hobby: draw  sing  dance  basketball football  pingpong
       computer 

db.class.insert([
{name:"zhang",age:10,sex:'m',hobby:['a','b','c']},
.....
])

db.getCollection("class").insertMany([
  { name: "zhang", age: 10, sex: 'm',hobby: ['a','b','c'] },
  { name: "li", age: 8, sex: 'm',hobby: ['sing','draw','dance'] },
  { name: "xiaohong", age: 11, sex: 'm',hobby: ['basketball','football','pingpong'] },
  { name: "xiaoxiao", age: 6, sex: 'm',hobby: ['computer'] }
])

 

 


 4. 查找练习
①查看班级所有人信息
②查看班级中年龄为8岁的学生信息
③查看年龄大于10岁的学生信息
④查看年龄在 4---8岁之间的学生信息 
⑤找到年龄为6岁且为男生的学生
⑥找到年龄小于7岁或者大于10岁的学生
⑦找到年龄是8岁或者11岁的学生

> db.class.find()

> db.class.find({age:8})

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

> db.class.find({age:{ $gte:4,$lte:8}})

> db.class.find({age:6,sex:'m'})

> db.class.find({
... $or: [
... {age:{$lt:7}},
... {age:{$gt:10}}
... ]
... })

> db.class.find({ $or: [ {age:8}, {age:11} ] })

 

 


①找到兴趣爱好有两项的学生
②找到兴趣爱好有draw的学生
③找到既喜欢画画又喜欢跳舞的学生
④统计爱好有三项的学生人数
⑤找出本班年龄第二大的学生
⑥查看学生的兴趣范围

⑦将学生按年龄排序找到年龄最大的三个
⑧删除所有 年级大于12或者小于4岁的学生

 

db.class.find({hobby:{$size:2}})

db.class.find({hobby:"draw"})

db.class.find({hobby: {$all: ["draw", "dance"]}})

db.class.count({hobby:{$size:3}})

db.class.find().sort({age:-1}).skip(1).limit(1)

db.class.distinct('hobby')

db.class.find().sort({age:-1}).limit(3)

db.class.deleteMany({ $or: [{age: {$gt:12}},{age: {$lt:4}}]})

 

========================================================================= 

增加、更新、删除作业 : 
使用之前的grade数据库
1. 将小红的年龄变为8岁 兴趣爱好变为 跳舞 画画 

db.class.updateOne({ name:"xiaohong"}, { $set: { age: 8, hobby: ["dance","draw"] } })

 

 


 2. 追加小明兴趣爱好  唱歌
{$push:{hobby:'sing'}}

db.class.update({name: "xiaoxiao"},{$push:{hobby:"sing"}})

 注意:因为我的文档没有xiaoming学生的信息,我就用xiaoxiao代替的


3. 小王兴趣爱好增加  吹牛 打篮球
{$pushAll:{hobby:['吹牛','basketball']}}

db.class.update({name: "xiaoxiao"},{$pushAll:{hobby:["basketball","吹牛"]}})

 
 注意:因为我的文档没有小王学生的信息,我就用xiaoxiao代替的


4. 小李增加爱好,跑步和唱歌,但是不要和以前的重复
{$addToSet:{hobby:{$each:['running','sing']}}}

db.class.update({name: "xiaoxiao"},{$addToSet:{hobby:{$each:["running","sing"]}}})

 注意:因为我的文档没有小李学生的信息,我就用xiaoxiao代替的


5. 该班所有同学年龄加1
update({},{$inc:{age:1}},false,true)

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



6. 删除小明的sex属性
{$unset:{sex:0}}

db.class.update({name:"xiaoxiao"},{$unset:{sex:""}})

 注意:因为我的文档没有小明学生的信息,我就用xiaoxiao代替的 


 
7. 删除小李兴趣中的第一项
{$pop:{hobby:-1}}

db.class.updateOne({name:"xiaoxiao"},{$pop:{hobby:-1}})

 注意:因为我的文档没有小明学生的信息,我就用xiaoxiao代替的  


 
8. 将小红兴趣中的画画爱好删除
{$pull:{hobby:'draw'}}

db.class.update({name:"xiaohong"},{$pull:{hobby:"draw"}})

 =========================================================================

使用之前的grade数据库
增加分数域 score:{'chinese':88,'english':78,'math':98}

db.class.updateOne({name:"xiaohong"},{$set:{score:{chinese:88,english:78,math:98}}})

类似的给其他学生添加成绩。添加完之后: 

 


 
1. 按照性别分组统计每组人数
aggregate({$group:{_id:'$sex',num:{$sum:1}}})

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


 

2. 按照姓名分组,过滤出有重名的同学
aggregate([{$group:{_id:'$name',num:{$sum:1}}},{$match:{num:{$gt:1}}}])

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

 


3. 统计每名男生的语文成绩
aggregate([{$match:{sex:'m'}},{$project:{_id:0,name:1,'score.chinese':1}}])

db.class.aggregate([{$match:{sex:'m'}},{$project:{_id:0,name:1,'score.chinese':1}}])


 

4. 将女生按照英语分数降序排列
aggregate([{$match:{sex:'w'}},{$sort:{'score.english':-1}}])

db.class.aggregate([{$match:{sex:'w'}},{$sort:{'score.english':-1}}])
db.class.aggregate([{$match:{sex:'m'}},{$sort:{'score.english':-1}}])

 


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值