MongoDB聚合运算符:$toDouble

MongoDB聚合运算符:$toDouble

文章目录

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

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

语法

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

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

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

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

使用

下表列出了可转换为布尔值的类型:

输入类型 规则
Boolean 对于True,返回1,对于False返回0
Decimal 以Double返回Decimal的值,Decimal的值必须在Double的范围内,超出Double值域范围的Decimal不能转换
Double 原样返回
Integer 以Double返回整数值
Long 以Double返回Long值
String 将字符串转换为Double返回,但字符串表示的必须是10进制的比如"-5.5"、"1233",非10进制的会报错,如:"0x3343"
Date 返回自与日期值对应的纪元以来的毫秒数

下表列出了一些转换为布尔值的示例:

示例 结果
{$toDouble: true} 1
{$toDouble: false} 0
{$toDouble: 2.5} 2.5
{$toDouble: NumberInt(5)} 5
{$toDouble: NumberLong(10000)} 10000
{$toDouble: "-5.5"} -5.5
{$toDouble: ISODate("2018-03-27T05:04:47.890Z")} 1522127087890

举例

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

js 复制代码
db.weather.insertMany( [
   { _id: 1, date: new Date("2018-06-01"), temp: "26.1C" },
   { _id: 2,  date: new Date("2018-06-02"), temp: "25.1C" },
   { _id: 3,  date: new Date("2018-06-03"), temp: "25.4C" },
] )

下面的聚合操将weather集合的temp值转换为Double:

js 复制代码
//将转换后的字段添加到文档

// Define stage to add degrees field with converted value

tempConversionStage = {
   $addFields: {
      degrees: { $toDouble: { $substrBytes: [ "$temp", 0, 4 ] } }
   }
};


db.weather.aggregate( [
   tempConversionStage,
] )

执行的结果为:

json 复制代码
{ "_id" : 1, "date" : ISODate("2018-06-01T00:00:00Z"), "temp" : "26.1C", "degrees" : 26.1 }
{ "_id" : 2, "date" : ISODate("2018-06-02T00:00:00Z"), "temp" : "25.1C", "degrees" : 25.1 }
{ "_id" : 3, "date" : ISODate("2018-06-03T00:00:00Z"), "temp" : "25.4C", "degrees" : 25.4 }
相关推荐
这个DBA有点耶3 分钟前
银行核心系统数据库迁移怎么选?6 步法+5 个避坑指南
数据库·安全·架构
风哥2号7 分钟前
数据库教程FGMT31‑Linux平台MySQL9.7安装配置与版本升级
数据库
hanchenxing15 分钟前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
java_logo1 小时前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像
A心有千千结2 小时前
GO 使用 OpenTelemetry 进行编译时插桩,实现零码注入
数据库·golang·可观测性·观测云
GreatVicent2 小时前
腾讯AI产业大会解读:Agent进场,企业基础设施怎么搭
大数据·数据库·人工智能·llm·agent·企业信息化
大模型码小白3 小时前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna3 小时前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
IvorySQL3 小时前
PostgreSQL 日报|建库策略致备库静默丢数据(9 月 12 日)
数据库·人工智能·postgresql
这个DBA有点耶3 小时前
当Agent从“写SQL”变成“执行SQL”:数据库安全模型需要重新设计
数据库·aigc·dba