MongoDB聚合运算符:$toLong

MongoDB聚合运算符:$toLong

文章目录

  • [MongoDB聚合运算符:toLong](#MongoDB聚合运算符:toLong)

$toLong聚合运算符将指定的值转换为长整数类型。如果指定的值为空或缺失,则返回null;如果值无法被转换为长整数,则报错。

语法

js 复制代码
{
   $toLong: <expression>
}

$toLong接受任何有效的表达式。

$toLong$convert表达式的简写形式:

js 复制代码
{ $convert: { input: <expression>, to: "long" } }

使用

下表列出了可转换为长整数的类型:

输入类型 规则
Boolean 对于True,返回Long(1),对于False返回Long(0)
Decimal 返回截断值。截断的小数值必须在长整数的最小值和最大值范围内。如果截断值小于最小长整数值或大于最大长整数值,则无法转换
Double 返回截断值。截断的双数值必须在长整数的最小值和最大值范围内。如果截断值小于最小长整数值或大于最大长整数值,则无法转换
Integer 以长整数返回整数值
Long 直接返回
String 将字符串转换为长整数返回,但字符串表示的必须是10进制的长整数比如"-5"、"1233",非10进制的会报错,如:"0x3343"
Date 返回自与日期值对应的纪元以来的毫秒数

下表列出了一些转换为长整数的示例:

示例 结果
$toLong: true Long("1")
$toLong: false Long("0")
$toLong: 1.99999 Long("1")
$toLong: NumberDecimal("5.5000") Long("5")
$toLong: NumberDecimal("9223372036000.000") Error
$toLong: NumberInt(8) Long(8)
$toLong: ISODate("2018-03-26T04:38:28.044Z") Long("1522039108044")
$toLong: "-2" Long("-2")
$toLong: "2.5" Error
$toLong: null null

举例

使用下面的脚本创建orders集合:

js 复制代码
db.orders.insertMany( [
   { _id: 1, item: "apple", qty: NumberInt(5) },
   { _id: 2, item: "pie", qty: "100" },
   { _id: 3, item: "ice cream", qty: NumberLong("500") },
   { _id: 4, item: "almonds", qty: "50" },
] )

下面的聚合操将qty集转换为长整数,然后进行排序:

js 复制代码
// 定义阶段,将qty转换为长整数

qtyConversionStage = {
   $addFields: {
      convertedQty: { $toLong: "$qty" }
   }
};

// 定义阶段,基于转换后的字段convertedQty进行排序

sortStage = {
   $sort: { "convertedQty": -1 }
};


db.orders.aggregate( [
   qtyConversionStage,
   sortStage
])

执行的结果为:

js 复制代码
{ _id: 3, item: 'ice cream', qty: Long("500"), convertedQty: Long("500") },
{ _id: 2, item: 'pie', qty: '100', convertedQty: Long("100") },
{ _id: 4, item: 'almonds', qty: '50', convertedQty: Long("50") },
{ _id: 1, item: 'apple', qty: 5, convertedQty: Long("5") }
相关推荐
十二同学啊7 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技7 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐10 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB10 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶11 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax11 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB11 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
vx-程序开发11 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
&不羁之风&11 小时前
从 MySQL 到 MongoDB:80 万系统日志(sys_log)平滑迁移完整实战(含 Windows 环境 mongoimport 安装与避坑)
mysql·mongodb
一 乐12 小时前
养老院管理系统|基于springboot + vue养老院管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计