MongoDB聚合运算符:$tsSecond

MongoDB聚合运算符:$tsSecond

文章目录

  • MongoDB聚合运算符:$tsSecond
    • 语法
    • 使用
    • 举例
      • 从时间戳timestamp字段获取秒数
      • 在变更流光标中使用$tsSecond监视集合的变化

$tsSecond以长整型返回时间戳的秒数。

语法

{ $tsSecond: <expression> }
  • <expression>必须是能够解析为时间戳timestamp的表达式。

使用

  • 如果参数解析为null或引用不存在的字段,则结果返回null
  • 如果参数无法解析为timestamp,则报错。

举例

从时间戳timestamp字段获取秒数

使用下面的脚本创建stockSales集合,包含了公司股票金融市场销售数据:

db.stockSales.insertMany( [
   { _id: 0, symbol: "MDB", saleTimestamp: Timestamp(1622731060, 1) },
   { _id: 1, symbol: "MDB", saleTimestamp: Timestamp(1622731060, 2) },
   { _id: 2, symbol: "MSFT", saleTimestamp: Timestamp(1714124193, 1) },
   { _id: 3, symbol: "MSFT", saleTimestamp: Timestamp(1714124193, 2) },
   { _id: 4, symbol: "MSFT", saleTimestamp: Timestamp(1714124193, 3) }
] )

在时间戳的构造函数中:

  • 第一个参数是UTC1970年1月1日0时0分0秒起至现在的总秒数
  • 第二个参数是递增叙述,当多个事件在同一秒发生时,递增的序数可以唯一标识一个事件

下面的聚合操作在$project管道阶段使用$tsSecond从股票销售时间戳字段saleTimestamp中返回秒数:

db.stockSales.aggregate( [
   {
      $project:
      {
         _id: 0, saleTimestamp: 1, saleSeconds: { $tsSecond: "$saleTimestamp" }
      }
   }
] )

执行的结果为:

{
  saleTimestamp: Timestamp({ t: 1622731060, i: 1 }),
  saleSeconds: Long("1622731060")
},
{
  saleTimestamp: Timestamp({ t: 1622731060, i: 2 }),
  saleSeconds: Long("1622731060")
},
{
  saleTimestamp: Timestamp({ t: 1714124193, i: 1 }),
  saleSeconds: Long("1714124193")
},
{
  saleTimestamp: Timestamp({ t: 1714124193, i: 2 }),
  saleSeconds: Long("1714124193")
},
{
  saleTimestamp: Timestamp({ t: 1714124193, i: 3 }),
  saleSeconds: Long("1714124193")
}

在变更流光标中使用$tsSecond监视集合的变化

cakeSales集合上创建一个变更流光标:

cakeSalesCursor = db.cakeSales.watch( [
   {
      $addFields: {
         clusterTimeSeconds: { $tsSecond: "$clusterTime" }
      }
   }
] )

在本例中:

  • db.collection.watch()方法为cakeSales集合创建一个变更流光标并赋予cakeSalesCursor
  • $addFields阶段为cakeSalesCursor添加一个名为clusterTimeSeconds的字段。
    • $clusterTimecakeSales集合变化操作日志入口的时间戳
    • $tsSecond从存储在clusterTimeSeconds$clusterTime中返回秒数

创建cakeSales集合,包含了加利福尼亚州和华盛顿州的蛋糕销售情况:

db.cakeSales.insertMany( [
   { _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
     state: "CA", price: 13, quantity: 120 },
   { _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
     state: "WA", price: 14, quantity: 140 },
   { _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
     state: "CA", price: 12, quantity: 145 },
   { _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
     state: "WA", price: 13, quantity: 104 },
   { _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
     state: "CA", price: 41, quantity: 162 },
   { _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
     state: "WA", price: 43, quantity: 134 }
] )

使用cakeSalesCursor监控cakeSales集合的变化,例如:使用next()方法从cakeSalesCursor获取下一个文档:

cakeSalesCursor.next()

下面的例子输出显示了第一个添加到cakeSales集合insert的详细信息,clusterTimeSeconds字段包含了来自于clusterTime字段的秒数。

_id: {
  _data: '82613A4A51000000032B022C0100296E5A100495189B4131584C56AC8BA9D540799F23461E5F696400290004'
},
operationType: 'insert',
clusterTime: Timestamp({ t: 1631210065, i: 3 }),
fullDocument: {
  _id: 0,
  type: 'chocolate',
  orderDate: ISODate("2020-05-18T14:10:30.000Z"),
  state: 'CA',
  price: 13,
  quantity: 120
},
ns: { db: 'test', coll: 'cakeSales' },
documentKey: { _id: 0 },
clusterTimeSeconds: 1631210065

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Ubuntu 24.04 LTS (Noble Numbat)上安装nfs server以及nfs client

在Ubuntu 24.04 LTS (Noble Numbat)上,我使用的是最小化安装, 当然server版本的Ubuntu在安装的时候可能会有网络不通的问题,解决办法见如下文章: ubuntu 24.04 server 仅NAT模式上网设置静态IP设置-CSDN博客文章浏览阅读489次,点赞9次,收藏3次。在Ubuntu 24.04 上设置网…

Modbus TCP转CAN网关在不同行业中的应用以及其使用上的优势

倍讯科技Modbus TCP转CAN网关通常被用于工业自动化领域&#xff0c;特别是在需要连接现有Modbus TCP网络和CAN总线设备的场景中。以下是该网关在不同行业中的应用以及其使用上的优势&#xff1a; 1. 制造业&#xff1a; - 在制造业中&#xff0c;各种类型的设备和机器通常使用不…

CANape测量分析标定

CANape创建工程及标定 1 创建工程 1. 创建ape工程 打开CANape软件,创建新的ape工程 2.添加数据库文件 通过添加Device(确定信号源)的方式加载数据库文件 A2L:通过添加CCP、 XCP、VX1000的Device DBC:对总线报文检测 CAN CDD: 诊断功能 Diagnostic 如需导入MAP文件…

企业智能照明控制系统 为企业实现智能化照明管理

工厂车间传统照明的问题及智能照明系统的优势 谢继东15821713522 一、工厂传统照明存在的问题&#xff1a; 1、工业厂房一般建筑结构高&#xff0c;跨距大。灯具安装悬挂高&#xff0c;照明空间大&#xff0c;灯具回路多&#xff0c;而车间是厂区对照明要求较高的区域&#xf…

数据结构复习指导之树与二叉树的应用(哈夫曼和并查集)

文章目录 树与二叉树的应用 考纲内容 复习提示 1.哈夫曼树和哈夫曼编码 1.1哈夫曼树的定义 1.2哈夫曼树的构造 1.3哈夫曼编码 2.并查集 2.1并查集的概念 2.2并查集的存储结构 2.3并查集的基本实现 2.4并查集实现的优化 树与二叉树的应用 考纲内容 &#xff08;一&…

Java Web开篇

Java Web开篇 大纲 整个内容梳理 具体案例 整个内容梳理 这是前端和后端组成的系统的框架结构

区块链的跨链交互:从学校间交流看跨链技术

区块链是一种去中心化的分布式账本技术&#xff0c;它通过加密学和共识机制来确保数据的安全性和不可篡改性。每个区块链就像一所独立的学校&#xff0c;有自己的制度、学生和重点专业。它们各自运行&#xff0c;有时在同一领域展开不同的活动。随着区块链技术的不断发展&#…

Java的VO,BO,PO,DO,DTO

写在前面 本文看下VO&#xff0c;BO&#xff0c;PO&#xff0c;DO&#xff0c;DTO&#xff0c;都是啥&#xff01; 1&#xff1a;正文 先看一张图&#xff0c;看了图就能知道个大概了&#xff1a; 1.1&#xff1a;PO 全称是persistent object&#xff0c;对应数据的表&am…

一站式搭建交友平台-交友系统源码-支持H5小程序+带安装说明+可封装APP-交友网站系统平台搭建

简述 社交交友系统是一种比较复杂的系统&#xff0c;需要涉及到前端、后端、数据库等多个方面。具体实现方式因不同开发者和需求而异。 功能 1、用户注册、登录和注销功能。 2、用户资料填写和修改功能&#xff0c;包括头像、昵称、性别、年龄、个人介绍等信息。 3、用户之间…

你了解手机设备的dpr吗?它和CSS又有什么联系?

当我们在前端开发中涉及到devicePixelRatio时&#xff0c;我们实际上在谈论屏幕像素密度&#xff0c;即每英寸的像素数。这个属性告诉我们在一个设备上的一个CSS像素对应多少物理像素。 目录 知识点概览 dpr值的计算 dpr的用处 知识点概览 比如我们新买了一个手机&#xff0…

怎样才能不当数据泄露的下一个受害者?

在数字化时代&#xff0c;数据泄露成为了所有企业必须面对的难题。无论规模大小&#xff0c;每家公司都可能成为黑客攻击的目标&#xff0c;从而遭受数据泄露的风险。然而&#xff0c;通过采取一系列预防措施&#xff0c;企业可以极大地降低成为下一个受害者的可能性。 教育员…

Linux实验 vi编辑器的使用与磁盘管理

实验目的&#xff1a; 掌握vi编辑器的启动、保存和退出&#xff1b;掌握vi编辑器的三种工作模式的转换及输入模式下的操作&#xff1b;了解Linux文件系统类型、虚拟文件系统和存储设备的名称&#xff1b;掌握磁盘文件系统的挂载和卸载&#xff1b;掌握常用磁盘操作命令&#x…

现货黄金白银行情走高带来的投资机会分析

当现货黄金和白银行情呈现出走高的态势时&#xff0c;这常常被投资者解读为一个潜在的投资机会。本文旨在分析在黄金白银价格上涨时的投资机会&#xff0c;并指出应对策略。 一、走高行情背后的机会 行情的上升&#xff0c;往往代表了市场在某种程度上的认可&#xff0c;无论这…

(有奖调查)企业级3D模型资产管理平台,用户需求大调查!

&#xff08;有奖调查&#xff09;企业级3D模型文件管理平台用户需求大调查https://www.wjx.cn/vm/PpLKkmn.aspx#

深圳盐田某前沿研究所:OLED透明屏引领未来科技空间

产品&#xff1a;55寸OLED透明屏 项目时间&#xff1a;2024年04月 项目地点&#xff1a;深圳盐田 在科技日新月异的今天&#xff0c;前沿的研究机构不仅追求科研的突破&#xff0c;也在不断探索和尝试将最新科技融入其工作环境之中。深圳盐田的一家前沿研究所便是这一探索的先…

yum makecache执行显示Errno 14]HTTP error 404

解决方法&#xff1a; 修改成能访问到的路径&#xff0c;后面都加上x86_64,删掉$basearch&#xff0c;以及把$releasever改成7&#xff1a; 运行成功&#xff1a;

k8s部署最新版zookeeper集群(3.9.2),并配置prometheus监控

目录 zookeeper集群部署创建zookeeper文件夹namespace.yamlscripts-configmap.yamlserviceaccount.yamlstatefulset.yamlsvc-headless.yamlsvc.yamlmetrics-svc.yaml执行部署 接入prometheus访问prometheus查看接入情况导入zookeeper监控模版监控展示 zookeeper集群部署 复制粘…

网络安全----小程序渗透测试反编译审计漏洞

一、什么是反编译审计漏洞 微信小程序反编译渗透测试是一种针对微信小程序的安全测试方法&#xff0c;是在通过对小程序源代码的反编译和分析&#xff0c;发现潜在的安全漏洞&#xff0c;并对其进行渗透测试以验证其安全性的一种方法。 二、测试流程及其步骤 反编译小程序&a…

企业信息防泄漏软件分析:盘点常用企业信息防泄漏软件

在当今数字化时代&#xff0c;企业信息防泄漏软件已成为保障企业数据安全不可或缺的一环。市面上众多的防泄漏软件各具特色&#xff0c;如何从中挑选出最适合自己企业的产品&#xff0c;成为了一个值得深入探讨的话题。 一、企业信息防泄漏软件分析 首先&#xff0c;我们需要…

leetcode刷题:买卖股票的最佳时机

题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大…