mongodb练习---增删改查

news2024/12/27 15:20:06

环境:

 


 

 

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.coloradmin.cn/o/761021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java8实战-总结2

Java8实战-总结2 基础知识方法和Lambda传递代码:一个例子从传递方法到Lambda 基础知识 方法和Lambda Scala和Groovy等语言的实践已经证明,让方法等概念作为一等值可以扩充程序员的工具库,从而让编程变得更容易。一旦程序员熟悉了这个强大的…

理解LLM中的ReAct

large language models (LLMs)大语言模型在语义理解和交互式决策方面有着不错的表现。ReAct在一次交互中循环使用推理和行动两个操作解决复杂问题,推理即利用模型自身语义理解能力,行动则利用模型以外的能力(如计算、搜索最新消息&#xff0c…

OpenCv之滤波器

目录 一、卷积 二、方盒滤波与均值滤波 三、高斯滤波 四、中值滤波 五、双边滤波 一、卷积 图像卷积就是卷积核在图像上按行华东遍历像素时不断的相乘求和的过程 相关知识点: 步长:就是卷积核在图像上移动的步幅.(为充分扫描图片,步长一般为1)padding:指在图片…

跨服务器跨库数据联合查询

今天群里有人问多个数据源, 可否显示在一个dbgrid, 我感觉是可以的 应该有两种办法 1,如果你两个服务器上都是用的mssqlserver, 那比较好办的, 如果不同数据库,如一个mssql,一个oracle。 则需要ssms方式创建。 通过SSMS查看,如果Microsoft OLE DB Provider for …

docekr-compose搭建redis集群(三主三从)

硬件:三台主机 172.50.2.40 172.50.2.41 172.50.2.42 需求:不想让它随机分配主从关系。想指定主从关系,如下: 主节点:172.50.2.40:6379,从节点172.50.2.41:6378 主节点:172.50.2.41:6379&…

C波段可调谐激光器控制软件系统

花了两周时间,利用下班时间,设计了一个ITLA可调谐激光器控制系统,从硬件到软件。下面这个图片整套硬件系统,软件硬件都自己设计,可以定制,做到单片机问题也不大。相当于一套光源了 这是软件使用的界面&…

PyTorch中的torch.nn.Linear函数解析

torch.nn是包含了构筑神经网络结构基本元素的包,在这个包中,可以找到任意的神经网络层。这些神经网络层都是nn.Module这个大类的子类。torch.nn.Linear就是神经网络中的线性层,可以实现形如yXweight^Tb的加和功能。 nn.Linear():…

Linux网络---网络预备

文章目录 计算机网络背景计算机网络协议网络传输基本流程 网络中的地址管理 一、计算机网络背景 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起 广域网WAN: 将远隔千里的计算机…

基于Javaweb实现ATM机系统开发实战(十二)用户转账功能实现

还是老规矩&#xff0c;先看前端传来怎样的参数&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core"…

本地安装Linux虚拟机(超详细)

本文已收录于专栏 《运维》 目录 安装前准备虚拟机软件Linux镜像 安装过程中创建虚拟机安装linux系统 安装后测试 安装前准备 虚拟机软件 需要下载一个虚拟机软件&#xff0c;比如VirtualBox或VMware Workstation。这些软件可以创建和管理虚拟机。 这是VMware的官网&#xff1…

ceph集群(一)

ceph 一、存储基础分布式存储&#xff08;软件定义的存储 SDS&#xff09; 二、Ceph 简介Ceph 优势Ceph 架构Ceph 核心组件OSD 存储后端Ceph 数据的存储过程Ceph 集群部署 三、基于 ceph-deploy 部署 Ceph 集群实验Ceph 生产环境推荐&#xff1a;Ceph 环境规划部署 Ceph 集群 一…

Linux环境下,通过Docker搭建及配置RabbitMQ

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Linux环境下&#xff0c;通过Docker搭建及配置RabbitMQ ⏱️ 创作时间…

SpringBoot--整合FreeMarker--使用/实例

原文网址&#xff1a;SpringBoot--整合FreeMarker--使用/实例_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SpringBoot如何使用FreeMarker。 配置文件 application.yml spring:#模板引擎 freemarkerfreemarker:# 模板后缀suffix: .ftl# 是否启用模板缓存cache: false# 模板编…

二、MySQL启动和客户端连接

一、启动 方法一&#xff1a; 1、winR&#xff0c;输入services.msc&#xff0c;按回车 2、找到MySQL&#xff0c;右键-启动/停止 MySQL安装后&#xff0c;默认已启动。 方法二、 1、winR&#xff0c;输入cmd&#xff0c;打开命令行 2、输入启动与停止命令 二、客户端连接 …

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…

UEC++:HUD

绘制文字&#xff1a; Canvas&#xff1a;必须需要字体 Canvas的颜色设置&#xff1a; 不失真放大字体&#xff1a; 绘制图片&#xff1a; 复杂方式绘制图片&#xff1a; 绘制材质球&#xff1a; 绘制线条&#xff1a;起始位置&#xff0c;终点位置&#xff0c;颜色&#xff0c…

MySQL入门教程(1)

文章目录 一. 数据库简介1.1 什么是数据库1.2 数据库的分类 二. MySQL2.1 MySQL简介2.2 MySQL的客户端2.3 MySQL的服务器2.4 总结 一. 数据库简介 1.1 什么是数据库 数据库是一类软件, 帮助我们管理数据. 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保…

latex 好看的文本框框

嘿嘿&#xff0c;完全符合我的审美&#xff0c;我真是小机灵鬼~ 分享给大家 \begin{tcolorbox}[colbackgray!20, colframegray!100, sharp corners, leftrule{3pt}, rightrule{0pt}, toprule{0pt}, bottomrule{0pt}, left{2pt}, right{2pt}, top{3pt}, bottom{3pt}]blablabla …

React(3)

1.案例选项卡 import React, { Component } from reactexport default class App extends Component {state{tabList:[{id:1,text:"电影"},{id:2,text:"影院"},{id:3,text:"我的"}]}render() {return (<div><ul>{this.state.tabList…

verilog实现pwm呼吸灯

文章目录 verilog实现pwm呼吸灯一、简介二、代码设计三、仿真代码编写四、仿真结果五、总结 verilog实现pwm呼吸灯 一、简介 呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化&#xff0c;感觉好像是人在呼吸。其广泛应用于手机之上&#xff0c;并成为各大品牌新款手…