MongoDB聚合运算符:$toDouble

embedded/2024/9/23 1:02:33/

MongoDB聚合运算符:$toDouble

文章目录

  • MongoDB聚合运算符:$toDouble
    • 语法
    • 使用
    • 举例

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

语法

{$toDouble: <expression>
}

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

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

{ $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集合:

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:

//将转换后的字段添加到文档// Define stage to add degrees field with converted valuetempConversionStage = {$addFields: {degrees: { $toDouble: { $substrBytes: [ "$temp", 0, 4 ] } }}
};db.weather.aggregate( [tempConversionStage,
] )

执行的结果为:

{ "_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 }

http://www.ppmy.cn/embedded/35642.html

相关文章

AI部署指南

部署指南 建议大家尽可能的自己去部署&#xff0c;如果实在懒得搞&#xff0c;可以找我来帮你部署&#xff0c;详情参考 服务器代部署说明。 由于时间仓促&#xff0c;文档可能尚未详尽&#xff0c;我将在后续逐步补充详细的说明文档。 架构草图 项目依赖 必选依赖 MySQ…

smardaten让原型不仅只有原型!

smardaten面向软件研发全流程&#xff0c;从设计、开发、测试、到运维人员均可以基于平台完成一体化的开发工作。 随着平台设计场景下功能与组件的不断完善&#xff0c;在面对招投标、售前演示、需求确认的诉求时&#xff0c;已经有不少企业将软件原型设计的主战场转移至smard…

Python量化炒股的统计数据图

Python量化炒股的统计数据图 单只股票的收益统计图 查看单只股票的收盘价信息 单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令&#xff0c;进入Jupyter Notebook的研究平台。然后单击“新建”按钮&#xff0c;创建Python3文件&#xff0c;输入如下代码如下&am…

vue如何在服务器端使用过滤器

Vue.js 是一个前端框架&#xff0c;主要用于构建用户界面。在 Vue.js 中&#xff0c;过滤器&#xff08;filters&#xff09;通常用于在模板中格式化文本。然而&#xff0c;过滤器在 Vue 3 中已经被移除&#xff0c;因为在 Vue 3 中更推荐使用计算属性&#xff08;computed pro…

理解这些道理相当于在人生的航程上装备了一双智慧的翅膀

1. 走自己的路&#xff0c;因为只有你才能决定自己的命运。 2. 养育者亦会受反哺&#xff0c;掌灯人终会被照亮。 3. 如果心情不好&#xff0c;建议玩ARPG手机游戏[降龙猎手]放松自己&#xff0c;TapTap上就可以下载&#xff0c;不要 让不好的情绪一直持续下去&#xff0c;尽快…

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)

Python根据预设txt生成“你画我猜”题目PPT&#xff08;素拓活动小工具&#xff09; 场景来源 去年单位内部的一次素拓活动&#xff0c;分工负责策划设置其中的“你画我猜”环节&#xff0c;网络上搜集到题目文字后&#xff0c;想着如何快速做成对应一页一页的PPT。第一时间想…

leetcode-岛屿数量-99

题目要求 思路 1.使用广度优先遍历&#xff0c;将数组中所有为1的元素遍历一遍&#xff0c;遍历过程中使用递归&#xff0c;讲该元素的上下左右四个方向的元素值也置为0 2.统计一共执行过多少次&#xff0c;次数就是岛屿数量 代码实现 class Solution { public:int solve(vec…

ubuntu中的docker记录(3)——如何安装nvidia-docker以更好地支持GPU加速计算应用程序的运行

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、nvidia-docker2的安装1. 安装docker2. 安装nvidia-docker2(1) 添加密钥(2) 更新软件列表(3) 安装nvidia-docker2(4) 测试nvidia-docker2 二、可能的报错及解…