MongoDB聚合运算符:$derivative
$derivative聚合运算符返回返回指定窗口内的平均变化率(即求导),变化率使用以下公式计算:
$setWindowFields阶段窗口中的第一个和最后一个文件。- 分子,等于最后一个文档的表达式的值减去第一个文档表达式的值。
- 分母,等于最后一个文档
sortBy字段值减去第一个文档sortBy字段值。
语法
{$derivative: {input: <expression>,unit: <time unit>}
}
参数说明:
<expression>指定要指定的表达式,表达式必须要能被解析为数值unit字符串,用于指定时间单位,可以是:week、day、hour、minute、second、millisecond。如果sortBy字段不是日期类型,就必须忽略unit,换而言之,如果指定了unit,那么sortBy就必须是日期类型字段。
使用
$derivative只能用于$setWindowFields阶段,而且必须指定一个窗口。
举例
使用下面的脚本创建deliveryFleet集合,其内容是以30秒为间隔的送货卡车的里程表读数:
db.deliveryFleet.insertMany( [{ truckID: "1", timeStamp: new Date( "2020-05-18T14:10:30Z" ), miles: 1295.1 },{ truckID: "1", timeStamp: new Date( "2020-05-18T14:11:00Z" ), miles: 1295.63 },{ truckID: "1", timeStamp: new Date( "2020-05-18T14:11:30Z" ), miles: 1296.25 },{ truckID: "1", timeStamp: new Date( "2020-05-18T14:12:00Z" ), miles: 1296.76 },{ truckID: "2", timeStamp: new Date( "2020-05-18T14:10:30Z" ), miles: 10234.1 },{ truckID: "2", timeStamp: new Date( "2020-05-18T14:11:00Z" ), miles: 10234.33 },{ truckID: "2", timeStamp: new Date( "2020-05-18T14:11:30Z" ), miles: 10234.73 },{ truckID: "2", timeStamp: new Date( "2020-05-18T14:12:00Z" ), miles: 10235.13 }
] )
本例在$setWindowFields阶段使用$derivative获得每辆卡车的平均车速,单位是英里/小时,并且使用$match阶段过滤掉车速小于50英里/每小时的卡车。
db.deliveryFleet.aggregate( [{$setWindowFields: {partitionBy: "$truckID",sortBy: { timeStamp: 1 },output: {truckAverageSpeed: {$derivative: {input: "$miles",unit: "hour"},window: {range: [ -30, 0 ],unit: "second"}}}}},{$match: {truckAverageSpeed: {$gt: 50}}}
] )
在本例中:
$setWindowFields阶段获取每辆卡车每小时英里数的平均车速:partitionBy: "$truckID"根据truckID对集合文档进行分区sortBy:{timeStamp:1}根据timeStamp字段对文档进行正向排序,最早的里程表读数排在最前面output在窗口范围内使用$derivative将mailes的导数值赋予新的字段truckAverageSpeed。input表达式为$miles,作为求导计算的分子$derivative为timeStamp字段指定了"hour"为单位,作为求导计算的分母- 窗口包含了下限-30秒(前30秒的文档)和0秒(当前文档的时间戳)之间的范围。这意味着
$derivative返回卡车在30秒窗口中的速度(英里/小时)。
$match阶段使用大于运算符$gt筛选出平均速度大于50英里每小时的卡车。
在下面的输出中可以看出,卡车1的速度显示在truckAverageSpeed字段,卡车2的速度没有显示,因为卡车2的速度未超过50英里每小时
{ "_id" : ObjectId("60cb8a7e833dfeadc8e6285c"), "truckID" : "1","timeStamp" : ISODate("2020-05-18T14:11:00Z"), "miles" : 1295.63,"truckAverageSpeed" : 63.60000000002401 }
{ "_id" : ObjectId("60cb8a7e833dfeadc8e6285d"), "truckID" : "1","timeStamp" : ISODate("2020-05-18T14:11:30Z"), "miles" : 1296.25,"truckAverageSpeed" : 74.3999999999869 }
{ "_id" : ObjectId("60cb8a7e833dfeadc8e6285e"), "truckID" : "1","timeStamp" : ISODate("2020-05-18T14:12:00Z"), "miles" : 1296.76,"truckAverageSpeed" : 61.199999999998916 }
相关文章:
MongoDB聚合运算符:$derivative
$derivative聚合运算符返回返回指定窗口内的平均变化率(即求导),变化率使用以下公式计算: $setWindowFields阶段窗口中的第一个和最后一个文件。分子,等于最后一个文档的表达式的值减去第一个文档表达式的值。分母&am…...
面试官:如果你现在有20个Spring Boot微服务,如何监视所有这些Spring Boot微服务?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如果你现在有20个Spring Boot微服务,如何监视这些微服务? 要监视所有 Spring Boot 微服务,可以使用 Spring Boot Admin 这样的监控工具。Sprin…...
冯诺依曼模型
只要我们学习计算机操作系统,就离不开对冯诺依曼体系结构。因为我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 1.什么是冯诺依曼模型呢? 如上图所示,冯诺依曼模型由…...
高低拖延个体的任务决策及执行差异
高低拖延个体的任务决策及执行差异 摘要 拖延行为普遍存在,且影响着许多人的工作.学习和生活。已有的许多研究发现拖延个体明知自己需要尽快完成某项任务,但行动上却迟迟无法付诸实践,表现出一种知行不- -”的倾向.这种倾向是否在高低拖延特质者之间存…...
数据分析Pandas专栏---第十三章<Pandas训练题(初)>
前言: 写这篇是为了弄一个富有挑战性的Pandas练习题库,涵盖了许多常见和实用的数据处理问题。通过解决这些练习,能够深入了解Pandas提供的关键功能,掌握有效处理数据的技巧和方法。 练习题库涵盖了选择特定列并创建新DataFrame、对DataFrame进…...
Delete `␍`eslint(prettier/prettier) 错误的解决方案
最近开始一个新的项目,由他人构建,clone下来后,发现页面每行都有黄色的波浪线的提示:Delete ␍eslint(prettier/prettier) ,尝试了很多方法不能解决,最后选择关闭Prettier: 在.eslintrc.js文件…...
第3周 Python字典、集合刷题
第3周 Python字典、集合刷题 单击题目,直接跳转到页面刷题,一周后公布答案。 B2125:最高分数的学生姓名28:返回字典的键值75:字符串转字典77:映射字符串中的字母87:按条件过滤字典B3632&#…...
文字校对的首选——爱校对:用户真实反馈汇编
在今日快节奏、高标准的工作环境下,准确与效率成为了每位专业人士追求的双重目标。不论是在政府机构、学术领域、企业界,还是在自由职业者的行列中,我们都面临着同一个挑战:如何在保持工作速度的同时,确保每一份文档的…...
Llama-3即将发布:Meta公布其庞大的AI算力集群
Meta,这家全球科技巨头,再次以其在人工智能(AI)领域的雄心壮志震惊了世界。3月13日,公司在其官方网站上宣布了两个全新的24K H100 GPU集群,这些集群专为训练其大型模型Llama-3而设计,总计拥有高…...
【JAVA】Date、LocalDate、LocalDateTime 详解,实践应用
Date、LocalDate、LocalDateTime 详解,实践应用 一、Date、LocalDate 简介1、 java.util.Date:2、 java.time.LocalDateTime:3、 java.time.LocalDate: 二、输出格式1、使用 java.util.Date 的示例代码如下:2、使用 ja…...
分布式链路追踪(一)SkyWalking(1)介绍与安装
一、介绍 1、简介: 2、组成 以6.5.0为例,该版本下Skywalking主要分为oap、webapp和agent三部分,oap和webapp分别用于汇总数据和展示,这两块共同组成了Skywalking的平台;agent是探针,部署在需要收集数据的…...
蓝桥杯历年真题省赛之 2016年 第七届 生日蜡烛
一、题目 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意&…...
SCAU 8580 合并链表
8580 合并链表 时间限制:1000MS 代码长度限制:10KB 提交次数:3724 通过次数:2077 题型: 编程题 语言: G;GCC Description 线性链表的基本操作如下: #include<stdio.h> #include<malloc.h> #define ERROR 0 #define OK 1 #define ElemType inttyped…...
Docker安装Gitlab
下载镜像 直接下载最新版,比较大有2.36G docker pull gitlab/gitlab-ce创建数据存放的目录位置 按自己习惯位置创建目录 mkdir -p /usr/local/docker/docker_gitlab编写docker-compose.yml 在上面创建的挂载目录里面(/usr/local/docker/docker_gitl…...
浅淡 C++ 与 C++ 入门
我们知道,C语言是结构化和模块化的语言,适用于较小规模的程序。而当解决复杂问题,需要高度抽象和建模时,C语言则不合适,而C正是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库…...
学习和认知的四个阶段,以及学习方法分享
本文分享学习的四个不同的阶段,以及分享个人的一些学习方法。 一、学习认知的四个阶段 我们在学习的过程中,总会经历这几个阶段: 第一阶段:不知道自己不知道; 第二阶段:知道自己不知道; 第三…...
Python编程从入门到实践中的一些误区
1.num 使用num时python报错,后来查过后才知道是因为python不支持自增或自减,可以用1。 2.字符串和非字符串连接 要先将非字符串转换为字符串类型之后才能连接 print(2int(‘2’))#4 3.关键字参数必须在未…...
Kanebo HITECLOTH 高科技擦镜布介绍
Kanebo HITECLOTH,这款由日本KBSeiren公司制造的高科技擦镜布,以其卓越的清洁能力和超柔软的布质,成为了市场上备受瞩目的产品。 材质与特性 HITECLOTH采用0.1旦尼尔特级高级微纤维制造,质地细致、坚韧、不起颗粒。这种纤维的特…...
政务云安全风险分析与解决思路探讨
1.1概述 为了掌握某市政务网站的网络安全整体情况,在相关监管机构授权后,我们组织人员抽取了某市78个政务网站进行安全扫描,通过安全扫描,对该市政务网站的整体安全情况进行预估。 1.2工具扫描结果 本次利用漏洞扫描服务VSS共扫…...
Linux tcpdump抓包转Wireshark 分析
简介 tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流量 tcpdump指…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
