MongoDB聚合运算符:$integral
文章目录
- 语法
- 使用
- 举例
$integral聚合运算符只能用在$setWindowField阶段,返回曲线下面积的近似值,该曲线是使用梯形规则计算的,其中每组相邻文档使用以下公式形成一个梯形:
$setWindowFields阶段中用于积分间隔的sortBy字段值$integral中input字段表达式用于Y轴的值
语法
{$integral: {input: <expression>,unit: <time unit>}
}
$integral的参数说明
input,数值类型的表达式unit,指定时间单位的字符串,可以是:"week"、"day"、"hour"、"minute"、"second"、"millisecond"。如果sortBy字段不是日期类型,必须省略单位,如果指定了单位,就必须确保sortBy字段为日期类型
使用
如果省略窗口,则使用具有无界上限和下限的默认窗口。
举例
使用下面的脚本创建powerConsumption集合,包含仪表设备每隔 30 秒测量一次的用电量(以千瓦为单位):
db.powerConsumption.insertMany( [{ powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:10:30Z" ),kilowatts: 2.95 },{ powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:11:00Z" ),kilowatts: 2.7 },{ powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:11:30Z" ),kilowatts: 2.6 },{ powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:12:00Z" ),kilowatts: 2.98 },{ powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:10:30Z" ),kilowatts: 2.5 },{ powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:11:00Z" ),kilowatts: 2.25 },{ powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:11:30Z" ),kilowatts: 2.75 },{ powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:12:00Z" ),kilowatts: 2.82 }
] )
下面的例子在$setWindowFields阶段使用$integral输出每个仪表装置测量的能耗(千瓦时):
db.powerConsumption.aggregate( [{$setWindowFields: {partitionBy: "$powerMeterID",sortBy: { timeStamp: 1 },output: {powerMeterKilowattHours: {$integral: {input: "$kilowatts",unit: "hour"},window: {range: [ "unbounded", "current" ],unit: "hour"}}}}}
] )
在本例中:
partitionBy: "$powerMeterID"对集合中的文档按照powerMeterID分区。sortBy: { timeStamp: 1 }对分区内的文档按照timeStamp从小到大进行排序,最早的timeStamp排在最前面。output使用$integral将一个区域窗口的kilowatts积分值放到新字段powerMeterKilowattHours:input表达式为$kilowatts,用于积分计算的Y轴值$integral unit将timeStamp的积分单位设置为hour小时,$integral返回千瓦时的能源消耗- 窗口在输出中包含了无下限到当前文档。这意味着
$integral返回从分区开头(每个电表的分区中的第一个数据点)到输出中当前文档的时间戳的文档的总千瓦时能耗。
在本例输出中,电表1和2测量的能耗显示在powerMeterKilowattHours字段中:
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62863"), "powerMeterID" : "1","timeStamp" : ISODate("2020-05-18T14:10:30Z"), "kilowatts" : 2.95,"powerMeterKilowattHours" : 0 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62864"), "powerMeterID" : "1","timeStamp" : ISODate("2020-05-18T14:11:00Z"), "kilowatts" : 2.7,"powerMeterKilowattHours" : 0.023541666666666666 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62865"), "powerMeterID" : "1","timeStamp" : ISODate("2020-05-18T14:11:30Z"), "kilowatts" : 2.6,"powerMeterKilowattHours" : 0.045625 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62866"), "powerMeterID" : "1","timeStamp" : ISODate("2020-05-18T14:12:00Z"), "kilowatts" : 2.98,"powerMeterKilowattHours" : 0.068875 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62867"), "powerMeterID" : "2","timeStamp" : ISODate("2020-05-18T14:10:30Z"), "kilowatts" : 2.5,"powerMeterKilowattHours" : 0 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62868"), "powerMeterID" : "2","timeStamp" : ISODate("2020-05-18T14:11:00Z"), "kilowatts" : 2.25,"powerMeterKilowattHours" : 0.019791666666666666 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62869"), "powerMeterID" : "2","timeStamp" : ISODate("2020-05-18T14:11:30Z"), "kilowatts" : 2.75,"powerMeterKilowattHours" : 0.040625 }
{ "_id" : ObjectId("60cbdc3f833dfeadc8e6286a"), "powerMeterID" : "2","timeStamp" : ISODate("2020-05-18T14:12:00Z"), "kilowatts" : 2.82,"powerMeterKilowattHours" : 0.06383333333333334 }
相关文章:
MongoDB聚合运算符:$integral
文章目录 语法使用举例 $integral聚合运算符只能用在$setWindowField阶段,返回曲线下面积的近似值,该曲线是使用梯形规则计算的,其中每组相邻文档使用以下公式形成一个梯形: $setWindowFields阶段中用于积分间隔的sortBy字段值$i…...
手撕算法-买卖股票的最佳时机 II(买卖多次)
描述 分析 使用动态规划。dp[i][0] 代表 第i天没有股票的最大利润dp[i][1] 代表 第i天持有股票的最大利润 状态转移方程为:dp[i][0] max(dp[i-1][0], dp[i-1][1] prices[i]); // 前一天没有股票,和前一天有股票今天卖掉的最大值dp[i][1] max(dp[i-1…...
技术创新与产业升级
在政府工作报告中,新兴技术如云计算、大数据、人工智能等被多次提及,这反映了政府高度重视新一代信息技术在推动经济社会发展中的重要作用。对于计算机行业而言,抓住这些新兴技术的发展机遇,推动技术创新和产业升级,将是未来发展的关键所在。 云计算作为一种新兴的计算模式,正…...
透视未来工厂:山海鲸可视化打造数字孪生新篇章
在信息化浪潮的推动下,数字孪生工厂项目正成为工业制造领域的新宠。作为一名山海鲸可视化的资深用户,我深感其强大的数据可视化能力和数字孪生技术在工厂管理中的应用价值,同时我们公司之前也和山海鲸可视化合作制作了一个智慧工厂项目&#…...
三.寄存器(内存访问)
1.内存中字的存储 2.并不是所有cpu都支持将数据段送入段寄存器,所以有时候用个别的寄存器先把数据段存储起来,再把该寄存器mov到段寄存器。 3.字的传送 4.栈 5.栈机制 举例说明 6.栈顶超界问题 push超界 pop超界 7.栈段...
Day31 贪心算法
Day31 贪心算法 455.分发饼干 我的思路: 小孩数组g指针一直前移,只有饼干数组s满足条件时,才前移,并且更新num 解答: class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.…...
【WEEK4】 【DAY5】AJAX - Part Two【English Version】
2024.3.22 Friday Following the previous article 【WEEK4】 【DAY4】AJAX - Part One【English Version】 Contents 8.4. Ajax Asynchronous Data Loading8.4.1. Create User.java8.4.2. Add lombok and jackson support in pom.xml8.4.3. Change Tomcat Settings8.4.4. Mo…...
力扣100热题[哈希]:最长连续序列
原题:128. 最长连续序列 题解: 官方题解:. - 力扣(LeetCode)题解,最长连续序列 :哈希表 官方解题思路是先去重,然后判断模板长度的数值是否存在,存在就刷新,…...
python笔记基础--文件和存储数据(7)
目录 1.从文件中读取数据 2.写入文件 3.存储数据 3.1使用json.dump()和json.load() 3.2保存和读取用户生成的数据 3.3重构 1.从文件中读取数据 读取整个文件 with open(data.txt) as file_object: contents file_object.read()print(contents)print(contents.rstrip…...
Vue黑马笔记(最新)
VUE vue是一个用于构建用户界面的渐进式框架 创建一个VUE实例 核心步骤: 准备容器引包(官网)-开发版本/生产版本创建一个vue实例 new vue()指定配置项->渲染数据 el指定挂载点(选择器),指定管理的是哪个容器。dat…...
安全工具介绍 SCNR/Arachni
关于SCNR 原来叫Arachni 是开源的,现在是SCNR,商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了,针对web app 的安全工具,DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…...
赋能数据收集:从机票网站提取特价优惠的JavaScript技巧
背景介绍 在这个信息时代,数据的收集和分析对于旅游行业至关重要。在竞争激烈的市场中,实时获取最新的机票特价信息能够为旅行者和旅游企业带来巨大的优势。 随着机票价格的频繁波动,以及航空公司和旅行网站不断推出的限时特价优惠ÿ…...
【大模型】在VS Code(Visual Studio Code)上安装中文汉化版插件
文章目录 一、下载安装二、配置显示语言(一)调出即将输入命令的搜索模式(二)在大于号后面输入:Configure Display Language(三)重启 三、总结 【运行系统】win 11 【本文解决的问题】 1、英文不…...
自定义WordPress顶部的菜单的方法
要自定义WordPress顶部的菜单,你需要使用WordPress的菜单系统。首先,你需要创建自定义菜单,然后将其设置为顶部导航菜单。 以下是创建自定义菜单并设置其为顶部导航菜单的步骤: 登录到WordPress管理界面。转到“外观”>“菜单…...
独孤思维:流量暴涨,却惨遭违规
最近独孤操作虚拟资料短视频,有个很深的感悟。 每天发10条短视频,积累到20天左右,播放量和粉丝数开始暴涨。 虽然很多牛比的比我数据好,但是对于刚做短视频的独孤来说,我已经满足了。 但是又发了10来天,…...
【python 装饰器 - 重试】做一个简易重试装饰器,如果函数执行错误则会自动重新执行,可设置重试次数,对爬虫比较友好
文章日期:2024.03.19 使用工具:Python 类型:装饰器 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算法)&…...
Linux线程补充之——同步
一、Linux线程同步 同步是相对于竞争的概念; 同步就是在保证安全的前提下啊,按照一定的顺序访问临界资源; 所有的资源一定是先访问的临界资源,申请失败然后才进行排队的;互斥锁保证的是来访问的进程只允许…...
面试九 设计模式
单例模式通常被归类为创建型设计模式,因为它主要关注如何创建对象的实例,以及如何确保在整个应用程序生命周期中只有一个实例存在。 1.为什么日志模块和数据库连接池需要单例模式 使用单例模式来实现数据库连接池主要有以下几个原因: 全局唯…...
c++和c语言的区别实例
C和C语言在程序设计领域内具有深远的影响,它们不仅丰富了编程的世界,也为软件开发人员提供了强大的工具。虽然C是在C语言的基础上发展起来的,但两者之间存在着一些关键的区别。为了更深入地理解这些不同,本文将从多个维度探讨C和C…...
图论基础|841.钥匙和房间、463. 岛屿的周长
目录 841.钥匙和房间 思路:本题是一个有向图搜索全路径的问题。 只能用深搜(DFS)或者广搜(BFS)来搜。 463. 岛屿的周长 841.钥匙和房间 力扣题目链接 (opens new window) 有 N 个房间,开始时你位于 0…...
实战应用:基于快马开发应对复杂依赖的openclaw深度卸载解决方案
今天在项目迁移过程中遇到了一个棘手问题:需要安全卸载遗留的openclaw组件。这个工具深度集成在系统里,直接删除会导致各种依赖问题。经过反复尝试,终于在InsCode(快马)平台上找到了高效的解决方案,记录下实战经验供参考。 依赖分…...
AutoCAD二次开发避坑指南:手把手教你选对.NET、VS和CAD版本(2025版)
AutoCAD二次开发避坑指南:手把手教你选对.NET、VS和CAD版本(2025版) 刚接触AutoCAD二次开发时,最让人头疼的莫过于版本匹配问题。我曾在一个旧项目改造中,因为没注意Visual Studio版本与AutoCAD 2023的兼容性ÿ…...
2026年阿里云2分钟超速步骤:OpenClaw搭建及大模型API Key、Skill集成
2026年阿里云2分钟超速步骤:OpenClaw搭建及大模型API Key、Skill集成。OpenClaw作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉,让AI在企业群聊、个人工作流中自动执行任务、处理消…...
蓝桥杯备赛:Day5-P1706 全排列问题
📚 算法笔记:P1706 全排列问题 (DFS 基础) 1. 题目描述 P1706 全排列问题 - 洛谷 输出 1∼N1 \sim N1∼N 的所有全排列,要求每个数字占 5 个场宽,排列按字典序从小到大输出。 2. 核心代码 (C 版本) #include <bits/stdc.h…...
Xournal++终极指南:免费手写笔记与PDF批注完整教程
Xournal终极指南:免费手写笔记与PDF批注完整教程 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. S…...
新手必看!圣女司幼幽-造相Z-Turbo开箱即用,3步生成精美古风人像
新手必看!圣女司幼幽-造相Z-Turbo开箱即用,3步生成精美古风人像 你是不是也遇到过这样的烦恼:脑子里构思好了一位仙气飘飘的古风角色,但要么自己不会画,要么用普通AI工具生成的效果总差那么点意思——衣服质感像塑料&…...
告别暴力搜索!用DiffDock的扩散模型5分钟搞定分子对接,效率提升12倍
5分钟颠覆传统:DiffDock如何用扩散模型重构分子对接效率天花板 在药物研发的漫长链条中,分子对接就像一把精准的钥匙开锁过程——需要找到小分子配体与靶标蛋白最契合的三维结合方式。传统方法如同盲人摸象,耗费数小时在亿万种可能中暴力搜索…...
MiroFish 深度技术研究报告
1. 项目概述与核心定位 1.1 项目愿景与设计理念 1.1.1 群体智能镜像:映射现实世界的数字孪生 MiroFish 的核心愿景是构建 “映射现实的群体智能镜像”——一种能够精确复刻复杂社会系统动态的数字孪生系统。该项目由盛大集团战略支持与孵化,其技术路径区别于传统预测方法:…...
开源多人游戏解决方案:Nucleus Co-op让单机游戏秒变多人派对
开源多人游戏解决方案:Nucleus Co-op让单机游戏秒变多人派对 【免费下载链接】splitscreenme-nucleus Nucleus Co-op is an application that starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirro…...
深蓝词库转换:打破30+输入法壁垒的终极解决方案
深蓝词库转换:打破30输入法壁垒的终极解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 深蓝词库转换(imewlconverter)是一…...
