MongoDB聚合运算符:$dateFromParts

文章目录

    • 语法
    • 使用
      • 值域
      • 值大于范围
      • 值小于范围
      • 时区
    • 举例

语法

{$dateFromParts : {'year': <year>, 'month': <month>, 'day': <day>,'hour': <hour>, 'minute': <minute>, 'second': <second>,'millisecond': <ms>, 'timezone': <tzExpression>}
}

也可以用以下格式指定组成日期字段ISO周日期格式指定日期字段:

{$dateFromParts : {'isoWeekYear': <year>, 'isoWeek': <week>, 'isoDayOfWeek': <day>,'hour': <hour>, 'minute': <minute>, 'second': <second>,'millisecond': <ms>, 'timezone': <tzExpression>}
}

参数字段说明:

字段必须说明
year如果没有用isoWeekYear则必须日历年度,可以是任何能解析为整数的表达式,值域为:1~9999,如果超出范围将报错。从4.4以后最小值为1,再之前的版本最小值是0
isoWeekYear若year没有用则必须ISO的周日期年,可以是任何能解析为整数的表达式,值域为:1~9999,如果超出将报错。从4.4以后最小值为1,再之前的版本最小值是0
month可选,只能与year同时使用月份,可以是任何能解析为整数的表达式,缺省值为1,值域:1~12,如果超出范围则将差值纳入日期计算
isoWeek可选,只能与isoWeekYear同时使用周数,可以是任何能解析为整数的表达式,缺省值为1,值域:1~53,如果超出返回则将差值纳入日期计算
day可选,只能与year同时使用日,可以是任何能解析为整数的表达式,缺省值为1,值域:1~31,如果超出范围则将差值纳入日期计算
isoDayWeek可选,只能与isoWeekYear同时使用星期几(Monday 1~Sunday 7),可以是任何能解析为整数的表达式,值域:1~7,如果超出范围,则将差值纳入日期计算
hour可选小时,可以是任何能解析为数值的表达式,缺省值为0,值域:0~23,如果超出范围,则将差值纳入日期计算
minute可选分钟,可以是任何能解析为数值的表达式,缺省值为0,值域:0~59,如果超出范围,则将差值纳入日期计算
second可选秒,可以是任何能解析为数值的表达式,缺省值为0,值域:0~59,如果超出范围,则将差值纳入日期计算
millisecond可选毫秒,可以是任何能解析为数值的表达式,缺省值为0,值域:0~999,如果超出范围,则将差值纳入日期计算
timezone可选执行操作的时区,<timezone>可以是任何能被解析为:Olson时区标识符或UTC偏移量

使用

值域

从MongoDB4.4开始,yearisoWeekYear的支持值范围为1-9999。在MongoDB以前的版本中,这些值的下限是0,支持的值范围是0-9999

如果为yearisoWeekYeartimezone以外的字段指定的值超出了有效范围,$dateFromParts就会从其他日期部分转入或减去差值来计算日期。

值大于范围

如下面的$dateFromParts表达式,其中month字段值为 14,比最大值 12 个月(或 1 年)多 2 个月:

{ $dateFromParts: { 'year' : 2017, 'month' : 14, 'day': 1, 'hour' : 12  } }

该表达式通过将year增加 1 并将month设置为 2 来计算日期:

ISODate("2018-02-01T12:00:00Z")

值小于范围

如下面的$dateFromParts表达式,其中月份字段值为 0,比最小值 1 个月少 1 个月:

{ $dateFromParts: { 'year' : 2017, 'month' : 0, 'day': 1, 'hour' : 12  } }

该表达式计算日期时,将year减 1,month设为 12,然后返回日期:

ISODate("2016-12-01T12:00:00Z")

时区

<timezone>字段中使用Olson时区标识符时,MongoDB会应用 DST 偏移(如果适用于指定的时区)。

例如下面的sales集合:

{"_id" : 1,"item" : "abc","price" : 20,"quantity" : 5,"date" : ISODate("2017-05-20T10:24:51.303Z")
}

下面的聚合说明了 MongoDB 如何处理 Olson 时区标识符的 DST 偏移量。示例使用$hour$minute操作符返回日期字段的相应部分:

db.sales.aggregate([
{$project: {"nycHour": {$hour: { date: "$date", timezone: "-05:00" }},"nycMinute": {$minute: { date: "$date", timezone: "-05:00" }},"gmtHour": {$hour: { date: "$date", timezone: "GMT" }},"gmtMinute": {$minute: { date: "$date", timezone: "GMT" } },"nycOlsonHour": {$hour: { date: "$date", timezone: "America/New_York" }},"nycOlsonMinute": {$minute: { date: "$date", timezone: "America/New_York" }}}
}])

操作返回以下结果:

{"_id": 1,"nycHour" : 5,"nycMinute" : 24,"gmtHour" : 10,"gmtMinute" : 24,"nycOlsonHour" : 6,"nycOlsonMinute" : 24
}

举例

下面的汇总使用$dateFromParts从提供的输入字段构建三个日期对象:

db.sales.aggregate([
{$project: {date: {$dateFromParts: {'year' : 2017, 'month' : 2, 'day': 8, 'hour' : 12}},date_iso: {$dateFromParts: {'isoWeekYear' : 2017, 'isoWeek' : 6, 'isoDayOfWeek' : 3, 'hour' : 12}},date_timezone: {$dateFromParts: {'year' : 2016, 'month' : 12, 'day' : 31, 'hour' : 23,'minute' : 46, 'second' : 12, 'timezone' : 'America/New_York'}}}
}])

操作返回以下结果:

{"_id" : 1,"date" : ISODate("2017-02-08T12:00:00Z"),"date_iso" : ISODate("2017-02-08T12:00:00Z"),"date_timezone" : ISODate("2017-01-01T04:46:12Z")
}

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

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

相关文章

100%开源大模型OLMo:代码/权重/数据集/训练全过程公开,重定义AI共享

前言 近日&#xff0c;艾伦人工智能研究所联合多个顶尖学术机构发布了史上首个100%开源的大模型“OLMo”&#xff0c;这一举措被认为是AI开源社区的一大里程碑。OLMo不仅公开了模型权重&#xff0c;还包括了完整的训练代码、数据集和训练过程&#xff0c;为后续的开源工作设立…

三星成功研发出业界首款12层堆叠HBM3E

三星电子有限公司成功研发出业界首款12层堆叠HBM3E DRAM——HBM3E 12H&#xff0c;这是迄今为止容量最大的HBM产品。这款新型HBM3E 12H内存模块提供了高达1,280GB/s的史上最高带宽&#xff0c;并拥有36GB的存储容量&#xff0c;相较于之前的8层堆叠HBM3 8H&#xff0c;在带宽和…

运维随录实战(1)

docker安装mongo 1,新建数据卷目录 mkdir -p /my/own/datadir 2,拉取镜像 docker pull mongo:latest 3,运行 docker run -d -p 27017:27017 -v /my/own/datadir:/data/db --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo …

ECMAScript6

课程链接 目录 相关介绍什么是ECMA什么是ECMAScript为什么学习ES6 letconst变量解构赋值模板字符串对象简化写法箭头函数函数参数的默认值rest参数扩展运算符Symbol迭代器生成器函数与调用Promise介绍与基本用法Promise封装读取文件Promise.prototype...then方法Promise.catch…

CCDP.01.寄主机SSH连接虚拟机的QA

V0.0 初始版本-2024.2.29 检查VM的网卡配置 如上图&#xff0c;如果enp0s3网卡没有出现形如10.0.0.??/24的ip配置&#xff0c;说明该网卡配置存在错误&#xff0c;或者没有“使能”该网卡。在RockyLinux8.X中可检查“ifcfg-enp0s&#xff1f;” vi /etc/sysconfig/network-…

智能系统引领的未来时代

智能系统引领的未来时代 随着人工智能技术的不断发展和普及&#xff0c;智能系统已经成为引领未来时代的关键力量。智能系统能够模拟人类的智能行为&#xff0c;实现自主学习、自主决策&#xff0c;并在各个领域展现出强大的应用潜力。在未来时代&#xff0c;智能系统将在各个…

【Python 图像处理 PIL 系列 13.1 -- 从列表中读取图像数据并生成图像】

文章目录 从列表中读取图像数据并生成图像代码示例 从列表中读取图像数据并生成图像 在Python中&#xff0c;可以使用Pillow库来创建和保存图像。这里我们将展示如何从列表list_num中读取RGB颜色数据&#xff0c;并根据row_num和column_num生成RGB格式的图像。 安装Pillow库&…

【JS】WebSocket实现简易聊天室

【JS】WebSocket实现简易聊天室 聊天室思路示例 聊天室思路 聊天室思路 1、连接服务器先建立连接&#xff0c;默认生成匿名用户(admin01) 2、客户端发送消息&#xff0c;其它客户端用户都会同步接收消息(服务端接受消息广播所有连接用户) 3、客户端修改昵称&#xff0c;其它客…

数据结构之七大排序

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

FreeRTOS操作系统学习——FreeRTOS工程创建

FreeROTS工程创建 详细步骤 如无特殊情况&#xff0c;大部人都要配置为外部高速时钟 另外&#xff0c;本实验使用了FreeRTOS&#xff0c;FreeRTOS的时基使用的是Systick&#xff0c;而 STM32CubeMX中默认的HAL库时基也是Systick&#xff0c;为了避免可能的冲突&#xff0c;最…

渗透测试工具 nmap 详解

官网&#xff1a;Nmap: the Network Mapper - Free Security Scanner -p&#xff1c;端口范围&#xff1e;&#xff1a;仅扫描指定的端口 用于扫描指定端口是否开放&#xff0c;在 -p 后输入指定的端口&#xff0c;以英文","进行拼接多个指定端口。 nmap -p 80&…

2024年3月产品认证基础考试简答题及答案

产品认证基础 46.产品认证的工厂检查有哪几种路线&#xff1f;各有什么优缺点&#xff1f; 答案&#xff1a;两种常用的检查路线&#xff1a; 1.按照要素或过程检查 按照认证规则规定的工厂应满足的要素要求&#xff08;包括质量保证能力要求&#xff09;&#xff0c;结合部…

TestNG @Test注释属性- threadPoolSize属性

本文将讨论TestNG中Test annotation的threadPoolSize属性。那么&#xff0c;我们开始吧。 那么&#xff0c;threadPoolSize属性有什么用处呢&#xff1f;答案是&#xff0c;无论何时您想要多次并行地运行一个测试方法&#xff0c;您都需要这个属性。该方法将从invocationCount…

java014 - Java继承

1、继承 1.1 继承概述 继承是面向对象的三大特征之一&#xff0c;可以使得子类具有父类的属性和方法&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法。 1.2 继承格式 public class 子类类名 extends 父类类名 {} 范例&#xff1a;public class son extends …

鸿蒙应用组件

基础组件 索引组件—AlphabetIndexer&#xff08;相当于安卓的seedbar&#xff09; 使用&#xff1a;AlphabetIndexer(value: {arrayValue: Array<string>, selected: number})空白填充组件—Blank&#xff08;占位使用&#xff0c;当父组件为Row/Column/Flex时生效&am…

Redis相关学习

Redis 的访问速度比 MySql 快上万倍。因为Redis 在内存中使用&#xff0c;MySql 在硬盘上使用 Redis 和 MySql 相比最大的劣势是存储空间是有限的 redis 主要作为缓存、内存数据库、消息队列 在启动redis客户端的时候&#xff0c;加上--raw&#xff0c;可以让redis客户端将二…

商淘云成功通过中国支付清算协会备案 助力商户合规发展有序经营

2023年12月&#xff0c;商淘云&#xff08;广州商淘信息科技有限公司&#xff09;进入中国支付清算协会第五批收单外包服务机构名单&#xff0c;成功通过聚合支付技术服务类型机构备案。这是继2022年商淘云通过第36类&#xff08;支付和投资类别&#xff09;商标的又一大喜事&a…

Python Shebang(#!)中的/usr/bin/env原理(#!/usr/bin/env python3)(定位系统安装Python解释器的位置)

文章目录 Understanding the Principle of /usr/bin/env in Python Shebang&#xff08;理解Python Shebang中的/usr/bin/env原理&#xff09;Introduction&#xff08;简介&#xff09;Understanding /usr/bin/env&#xff08;理解/usr/bin/env&#xff09;Defining /usr/bin/…

【Lattice FPGA 开发】IP核的调用

本文介绍Diamond开发软件进行IP核调用与对应官方文档查找方法。 文章目录 1. IP核的调用1.1 IPexpress调用IP核1.2 Clarity Designer调用IP核 2. IP核相关文档查找2.1 方法一2.2 方法二2.3 方法三 3 问题 1. IP核的调用 Diamond软件中&#xff0c;根据所选目标FPGA器件型号的…

Golang embed 库全面解析:从基础到高级应用

Golang embed 库全面解析&#xff1a;从基础到高级应用 引言Golang的 embed&#xff1a;简化资源管理提升可移植性与便利性适用场景的拓展 embed 库的基本概念embed 库的工作原理使用 embed 的基本语法访问嵌入资源的方法embed 的限制 如何使用 embed嵌入单个文件嵌入整个目录结…