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

 


 

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

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

相关文章

计算机网络-应用层

目录 一、应用层概述 二、客户-服务器方式(C/S方式)和对等方式(P2P方式) (一)客户/服务器 (Client/Server,C/S) 方式 (二)对等(Peer-to-Peer,P2P) 方式 (三)总结 三、动态主机…

云原生TDengine-v3.0部署手册

云原生TDengine-v3.0部署手册 一、管理namespace1.1 创建namespace1.2 namespaces列表 二、配置3份yaml文件2.1 tdengine3-storage-class.yaml2.2 taosd-service.yaml2.3 taosd-tdengine.yaml 三、服务部署3.1 部署StorageClass3.2 部署Service3.3 部署StatefulSet3.4 查看启动…

记一次JVM调优过程

文档修订记录 版本 日期 撰写人 审核人 批准人 变更摘要 & 修订位置 JVM相关理论 JVM内存 可分配内存: JVM可以调度使用的总的内存数,这个数量受操作系统进程寻址范围、系统虚…

dede去掉列表推荐文档的粗体字效果的修改方法

这样看起来多么的不美观了&#xff0c;现在我们本帖教程就是去掉列表这个粗体字效果。 DedeCMSv5.6具体操纵方法如下&#xff1a; 找到 /include/arc.listview.class.php 打开找到743 - 746 行下列代码&#xff1a; if(ereg(c,$row[flag])) {$row[title] "<b>"…

用Maven的exec插件执行Java程序

Maven的exec插件介绍 利用maven的exec插件可以执行系统和Java程序。 官网资源 exec插件官网&#xff1a;https://www.mojohaus.org/exec-maven-plugin/java-mojo.html Goals exec:exec表示在一个单独的进程内执行系统和Java程序。 exec:java表示在当前的Java虚拟机内执行J…

CVE-2023-1454注入分析复现

简介 JeecgBoot的代码生成器是一种可以帮助开发者快速构建企业级应用的工具&#xff0c;它可以通过一键生成前后端代码&#xff0c;无需写任何代码&#xff0c;让开发者更多关注业务逻辑。 影响版本 Jeecg-Boot<3.5.1 环境搭建 idea 后端源码&#xff1a; https://git…

使用Mybatis-plus-join做多表查询

使用Mybatis-plus-join做多表查询 我们做多表查询都是要自己写sql的&#xff0c;还是比较麻烦的&#xff0c;下面介绍一种不用自己写sql的方式来完成多表查询。 这个第三方工具是一个大佬封装的一个jar包&#xff0c;即mybatis-plus-join架包&#xff0c;这个架包可以支持MyB…

AWS MSK集群认证和加密传输的属性与配置

通常&#xff0c;身份认证和加密传输是两项不相关的安全配置&#xff0c;在Kafka/MSK上&#xff0c;身份认证和加密传输是有一些耦合关系的&#xff0c;重点是&#xff1a;对于MSK来说&#xff0c;当启用IAM, SASL/SCRAM以及TLS三种认证方式时&#xff0c;TLS加密传输是必须的&…

深入分析Spring的IoC容器:从底层源码探索

前言&#xff1a; 博主在最近的几次面试中&#xff0c;大中小厂都问到了Spring的ioc容器相关问题&#xff0c;这块知识确实是面试中的重点内容&#xff0c;因此结合所看的书籍&#xff0c;在这篇文章中总结下。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读&#xff0…

软件工程——第12章面向对象实现知识点整理

本专栏是博主个人笔记&#xff0c;主要目的是利用碎片化的时间来记忆软工知识点&#xff0c;特此声明&#xff01; 文章目录 1. 面向对象语言技术的特点&#xff1f; 2.选择面向对象程序设计语言时主要应该考虑哪些因素&#xff1f; 3.面向对象设计结果只能用面向对象语言实…

verilog实现led闪烁

文章目录 verilog实现led闪烁一、介绍二、代码三、仿真代码四、仿真结果五、总结 verilog实现led闪烁 一、介绍 使用verilog实现代码&#xff0c;实现led闪烁&#xff0c;每间隔200ms进行切换led灯 二、代码 module led (input wire clk,input wire rstn,output wire[3:0] …

【Spring Boot】Spring Boot的系统配置 — 实战:实现系统多环境配置

实战&#xff1a;实现系统多环境配置 在实际项目开发的过程中&#xff0c;需要面对不同的运行环境&#xff0c;比如开发环境、测试环境、生产环境等&#xff0c;每个运行环境的数据库、Redis服务器等配置都不相同&#xff0c;每次发布测试、更新生产都需要手动修改相关系统配置…