MongoDB聚合运算符:$toDecimal

ops/2024/9/24 12:51:50/

MongoDB聚合运算符:$toDecimal

文章目录

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

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

语法

{$toDecimal: <expression>
}

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

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

{ $convert: { input: <expression>, to: "Decimal" } }

使用

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

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

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

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

举例

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

db.orders.insertMany( [{ _id: 1, item: "apple", qty: 5, price: 10 },{ _id: 2, item: "pie", qty: 10, price: NumberDecimal("20.0") },{ _id: 3, item: "ice cream", qty: 2, price: "4.99" },{ _id: 4, item: "almonds",  qty: 5, price: 5 }
] )

下面的聚合操先orders集合的price转换为decimal,qty转换为整数,然后计算总费用:

// 定义转换阶段,转换后的price和qyt字段convertedPrice和convertedQty添加到文档priceQtyConversionStage = {$addFields: {convertedPrice: { $toDecimal: "$price" },convertedQty: { $toInt: "$qty" },}
};//定义计算合计阶段,将convertedPrice和convertedQty相乘得到总计totalPriceCalculationStage = {$project: { item: 1, totalPrice: { $multiply: [ "$convertedPrice", "$convertedQty" ] } }
};db.orders.aggregate( [priceQtyConversionStage,totalPriceCalculationStage
] )

执行的结果为:

{ _id: 1, item: 'apple', totalPrice: Decimal128("50") },
{ _id: 2, item: 'pie', totalPrice: Decimal128("200.0") },
{ _id: 3, item: 'ice cream', totalPrice: Decimal128("9.98") },
{ _id: 4, item: 'almonds', totalPrice: Decimal128("25") }

http://www.ppmy.cn/ops/38233.html

相关文章

FPGA第一篇,FPGA现场可编程门阵列,从0开始掌握可编程硬件开发(FPGA入门指南)

简介&#xff1a;FPGA全称Field-Programmable Gate Array&#xff0c;是一种可编程逻辑器件&#xff0c;它通过可编程的逻辑单元和可编程的连接网络实现了灵活的硬件实现。与固定功能的集成电路&#xff08;ASIC&#xff09;相比&#xff0c;FPGA具有更高的灵活性和可重新配置性…

MATLAB--Sequences Series II

Problem 2575. Sum of series I What is the sum of the following sequence:&#xff08;这个序列的和是多少&#xff1a;&#xff09; Σ(2k-1) for k1...n for different n?&#xff08;对于不同的 ( n )&#xff1f;&#xff09; 在MATLAB中&#xff0c;可以使用循环来计算…

【《OpenGL编程指南》第9版(红宝书)配套代码链接】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、代码链接 前言 中文&#xff1a;《OpenGL编程指南》第9版 作者&#xff1a;约翰克赛尼希(John Kessenich)[美] 格雷厄姆塞勒斯(Graham Sellers 戴夫施莱尔…

C++类和对象详解(一)

目录 面向过程和面向对象初步认识类的引入类的定义类的两种定义方式声明和定义全部放在类体中 声名定义分离 类的作用域成员变量命名规则建议访问限定符 类的封装类的实例化类对象模型类的对象大小的计算扩展 结构体内存对齐规则 感谢各位大佬对我的支持,如果我的文章对你有用,…

数据结构:顺序表

1.顺序表的概念 顺序表是用一段 物理地址连续 的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存 储。在数组上完成数据的增删查改。 2.接口实现 2.1初始化 void SLInit(SL* psl) {assert(psl);psl->a (SeqListData*)malloc(sizeof(SeqListData)*4…

外贸客户初次合作不付定金你怎么看

小伙伴有没有遇到这种情况&#xff0c;有一个非常大的订单&#xff0c;但是客户又不愿意付定金怎么办&#xff1f;你接还是不接。 那咱们这个小伙伴呢&#xff0c;就是说&#xff0c;这个客户&#xff0c;他是一个中间商&#xff0c;然后中间商的话呢&#xff0c;他这个订单量…

【MySQL】2.深入理解MySQL:数据类型、DDL与DML语句全解析

数据类型、DDL&#xff08;数据定义语言&#xff09;和DML&#xff08;数据操纵语言&#xff09;语句构成了数据管理和操作的核心。从精心选择数据类型以优化存储和查询性能&#xff0c;到运用DDL语句设计和调整数据库结构&#xff0c;再到使用DML语句对数据进行日常的增删改查…

超越视觉极限:深度学习图像超分辨率算法清单【第六部分】

超越视觉极限&#xff1a;深度学习图像超分辨率算法清单【第六部分】 简介2023年 - Deep learning-based Single-Image Super-Resolution2023年 - Super-resolution of magnetic systems using deep learning2023年 - Spectral super-resolution meets deep learning2023年 - S…