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") }
相关推荐
zyseo83 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai5 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o6 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
这个DBA有点耶6 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户6279947182627 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹7 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿7 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪7 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库
不像程序员的程序媛7 小时前
导出mysql数据结构
数据库·mysql
GlobalTradercrb7 小时前
独立站SEO先写博客还是先优化产品页?看站点阶段
数据库·人工智能·google·pdf·go·seo