反电信网络诈骗普法宣传答题实现联表查询学生的平均成绩

news2025/1/18 19:11:47

国际经济与贸易学院组织反电信网络诈骗线上答题活动,开展集中普法宣传教育活动,从而构筑立体化反诈骗防线。

通过此次比赛,引导广大同学时刻牢记反诈骗内容,提高师生的自我财产安全防范意识,加强自我网络保护的思想理念,守护好大家的“钱袋子”。

先看一下如何查询,将这两个表连起来的数据是class表中的id和student表中的class_id。

所以我们应该先查出徐老师所在班级的id,是2,然后再查询student表中class_id为2的学生,张二和李二,计算这两个学生的平均成绩。

使用lookup函数实现联表查询:

lookup({
  from: <要连接的集合名>,
  localField: <输入记录的要进行相等匹配的字段>,
  foreignField: <被连接集合的要进行相等匹配的字段>,
  as: <输出的数组字段名>
})

直接返回学生成绩平均值

如果想要在被连接的表格student做聚合操作,就用pipeline方法。

但是pipeline不能与localField、foreignField共用,所以我们先删掉localField、foreignField再在pipeline中取得学生成绩(score)的平均值

.lookup({
  from: 'student',
  pipeline: $.pipeline()
    .group({
      _id: null,
      score: $.avg('$score')
     })
    .done(),
  as: 'stu'
})
.match({
  teacher:"徐老师"
})
.end()

现在打印出来的数据是这样的:

{"list":
  [
    {"_id":"5e847ab25eb9428600a512352fa6c7c4",
      "id":2,
      "teacher":"徐老师",
      "cname":"二班",
      "stu":[
        {"_id":null,
          "score":90
        }
      ]
    }
  ]
}

但是现在输出的数据有点复杂,如果只想显示teacher和score这两个值,我们再进行下面的操作。

只显示teacher和score这两个值

.lookup({
  from: 'student',
  pipeline: $.pipeline()
    .group({  
      _id: null,
      score: $.avg('$score')
    })
    .done(),
  as: 'stu'
})
.match({
  teacher:"徐老师"
})
.replaceRoot({
  newRoot: $.mergeObjects([$.arrayElemAt(['$stu', 0]), '$$ROOT'])
})
.project({
  _id:0,
  teacher:1,
  score:1
})
.end()

现在打印出来的数据是这样的:

{"list":
  [
    {"score":90,"teacher":"徐老师"}
  ]
}

这里看文档的相关解释是:

replaceRoot({ newRoot: <表达式> })是固定写法,将已有字段作为一个新节点输出,我们通常用他来将二级数组变成一级数组。

mergeObjects是累计器操作符,$.arrayElemAt(['$stu', 0]), '$$ROOT’]就是将stu数组中的第一个元素,也就是[{"_id":null,"score":90}]合并到数组的跟节点上面,也就是与teacher、cname这些字段同一级。

project里面将_id后面设为0,将我们想要显示的元素后面设为1,就能控制最后输出的字段。

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

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

相关文章

Java中列表的基本操作

文章目录1、定义列表2、增删改操作&#xff08;1&#xff09;新增&#xff08;2&#xff09;删除&#xff08;3&#xff09;修改3、访问列表4、遍历列表&#xff08;1&#xff09;for循环遍历&#xff08;2&#xff09;foreach遍历&#xff08;3&#xff09;iterator迭代器遍历…

weblogic t3协议报错

目录 1、背景 2、报错信息 3、检测t3协议是否正常 1、背景 在上次生产环境版本升级的时候遇到问题&#xff0c;运维人员告知升级失败&#xff0c;然后首先怀疑是版本问题&#xff0c;就仔细检查了版本信息&#xff0c;没发现异常&#xff0c;然后与运维沟通获取到报错信息如…

如何利用 knest 构建数据中心的 Kubernetes as a Service?

随着越来越多的企业和应用转向云原生架构&#xff0c;对 Kubernetes 集群的需求也日趋多样化和灵活化。出于故障隔离的考虑&#xff0c;企业的数据中心往往需要多个独立的 Kubernetes 集群来承载不同的业务&#xff0c;而不是全部署在一个共享 Kubernetes 集群上。此外&#xf…

elastic search window安装,基础概念,项目实例

elastic searchelasticsearch场景window 安装教程基本配置成功标志基础知识名词概念介绍文档元数据索引创建原则创建实例创建索引指定 分区&#xff0c;片区的创建创建带有类型、映射的索引(Index)创建文档创建文档spring boot 整合项目实践全文检索高亮显示elasticsearch场景 …

CANoe的各模块节点是如何选择应用层通道的

当CANoe为Channel-based access模式时,需要配置软硬件通道的映射;当CANoe为Network-based access模式时,需要配置软硬件网络的映射 通道映射: 网络映射: 当然,只有CANoe软件工作模式为Real bus时,才需要软硬件通道或网络映射。如果工作模式为Simulated bus时,不需要软…

如何使用 Authing 实现 AWS CLI 单点登录?

越来越多企业和开发者依赖使用 Authing 单点登录 SSO 来便捷无缝的访问 AWS 服务。随着组织将更多业务上云&#xff0c;为员工提供无缝安全的访问认证&#xff0c;以此来提升员工的工作效率和保障企业的信息安全至关重要。 但随着业务的扩张&#xff0c;会发现在 AWS 环境中管…

pdf转换成word加密怎么办,这个方法能派上用场!

处理文档的时候难免遇到各种难题&#xff0c;就比如格式切换&#xff0c;PDF转word就是很常见的需求。有些工作性质比较特殊&#xff0c;对文档对保密性也有要求。这时候不仅要会把PDF转成word文档&#xff0c;还要学会给文档加密。有没有工具能把这两件事都办到呢?答案是有&a…

直播美颜SDK贴纸功能实现流程、贴纸代码分析

时下&#xff0c;直播美颜SDK已经成了大家日常拍摄以及专业美颜的必备工具。另外它也接入到了各种社交平台、短视频平台、直播平台中&#xff0c;此类平台中大部分用户都熟练掌握了美颜SDK的拍摄技巧&#xff0c;特别是短视频平台中&#xff0c;几乎每个用户都曾经使用过。根据…

极光笔记 | 如何为 iOS 16 创建一个实时活动

01、iOS 16 中的 Live Activity &#xff08;实时活动&#xff09;是什么&#xff1f;根据 Apple 官方描述&#xff0c;“实时活动是一项新功能&#xff0c;可帮助用户直接从锁定屏幕实时获知各种事情的进展&#xff0c;例如体育比赛、锻炼、拼车或送餐订单进度等等” 。例如&a…

Revit中基线的作用和【类型可见性】功能

一、Revit中基线的作用 Revit中基线是一个重要但又容易被忽视的内容&#xff0c;本文就简单介绍一下基线的一些常用功能&#xff0c;基线的作用&#xff1a; 1、参照底图 基线调整为其他层时&#xff0c;可以在当前视图中半色调显示&#xff0c;方便参照。 2、定位 3、基线还可…

【UE4 第一人称射击游戏】35-击中目标时添加准心提示

上一篇&#xff1a;【UE4 第一人称射击游戏】34-制作一个简易计时器本篇效果&#xff1a;可以看到击中目标后有了一个红色准心的提示效果步骤&#xff1a;新建一个控件蓝图&#xff0c;命名为“Hitmarker”双击打开“Hitmarker”&#xff0c;拖入一个图像控件&#xff0c;锚点设…

前端性能优化(七):前沿优化解决方案

目录 一&#xff1a;拯救移动端图标 - SVG 1.1.从 PNG 到 IconFont 1.2.从 IconFont 到 SVG 二&#xff1a;使用 Flexbox 优化布局 三&#xff1a;优化资源的加载顺序 3.1.Preload 3.2.Prefetch 四&#xff1a;预渲染页面 五&#xff1a;Windowing&#xff08;窗口化&…

Tomcat集群应用同步 —— 源码分析

文章目录前言一、应用同步的配置与实现原理二、应用同步源码分析三、如何获取集群的节点列表四、通讯模块Tribe五、集群的Session同步六、集群的Session共享总结前言 相信大家对Tomcat的集群部署都不陌生&#xff0c;以往&#xff0c;我们手动搭建一个Tomcat的集群环境&#x…

2023年运动耳机最新排行榜公布、公认最好用的五款运动耳机推荐

建议大家不要轻易尝试那些低价运动耳机&#xff0c;因为这些耳机大多数&#xff0c;只能满足基本听个响&#xff0c;舒适度和蓝牙稳定性都有代提高。通勤使用还勉强&#xff0c;运动强度一大&#xff0c;耳机容易掉落不说&#xff0c;蓝牙连接也很容易掉线&#xff0c;体验感受…

【自学Python】Python算术运算符

Python算术运算符 Python算术运算符教程 Python 中算术运算符是对 数值类型 的 变量 进行运算的&#xff0c;比如&#xff1a;加、减、乘、除、取模、整除和乘方运算等。 Python算数运算符语法 运算符说明实例结果加12.34 43.2155.55-减43.21 - 12.3430.87*乘2 * 3.141596…

springdata个人学习笔记

​ 入门 初始化springboot 依赖引入 <!-- springdata--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId&g…

node与node-sass版本对应

node&#xff1a;14.0.0 npm install sass-loader7.3.1 node-sass4.14.1 --savenode-sass对应node https://github.com/sass/node-sass/releases node-sass 和 sass-loader 的对应关系一般的情况下4.XX.YY&#xff0c;XX就是对应Node XX 版本 参考

Java常用工具类方法(下)

8. IOUtilsIO流在我们日常工作中也用得比较多&#xff0c;尽管java已经给我们提供了丰富的API。但我们不得不每次读取文件&#xff0c;或者写入文件之后&#xff0c;写一些重复的的代码。手动在finally代码块中关闭流&#xff0c;不然可能会造成内存溢出。有个好消息是&#xf…

一文搞懂Linux 环境变量

一文搞懂Linux 环境变量1.环境变量分类2.读取环境变量3.环境变量修改在 Linux 系统中&#xff0c;环境变量是用来定义系统运行环境的一些参数&#xff0c;比如每个用户不同的主目录&#xff08;HOME&#xff09;。 1.环境变量分类 按照作用域来分&#xff0c;环境变量可以简单…

【阶段三】Python机器学习13篇:机器学习项目实战:支持向量机分类的算法原理

本篇的思维导图: 支持向量机分类的算法原理 支持向量机分类算法的基本思路 1.最大间隔 支持向量机说到底就是一种“线性分类器”,它以“间隔”作为损失的度量,目标通过不断调整多维的“直线”——超平面,使得间隔最大化。所谓“支持向量”,就是所有数据点中直接参…