截断(聚合)
定义
$trunc
$trunc
截断数字到一个整数 或 指定的十进制位数。
语法
操作符 $trunc
语法如下
{ $trunc : [ <number>, <place> ] }
字段 | 类型 | 描述 |
---|---|---|
<number> | 数字 | |
<place> | 整数 | 可选 可以是任何有效的 表达式,其结果为介于 -20 和 100 之间的整数(不含这两个数)。例如,
|
行为
$trunc
表达式不会对截断的数据进行四舍五入。要四舍五入输入值到指定的位置,请使用$round
表达式。
返回数据类型
返回的数据类型与输入表达式或值的类型匹配。
null
、NaN
和 +/- Infinity
如果参数解析为
null
或引用的字段不存在,则$trunc
返回null
。如果参数解析为
NaN
,则$trunc
返回NaN
。如果参数解析为负无穷大或正无穷大,则
$trunc
分别返回负无穷大或正无穷大。
示例 | 结果 |
---|---|
{ $trunc: [ NaN, 1] } | NaN |
{ $trunc: [ null, 1] } | null |
{ $trunc : [ Infinity, 1 ] } | Infinity |
{ $trunc : [ -Infinity, 1 ] } | -Infinity |
示例
创建一个名为 samples
的集合,包含以下文档
db.samples.insertMany( [ { _id: 1, value: 19.25 }, { _id: 2, value: 28.73 }, { _id: 3, value: 34.32 }, { _id: 4, value: -45.34 } ] )
以下聚合返回将
value
截断到小数点后一位的结果db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 1 ] } } } ]) 操作返回以下结果
{ "_id" : 1, "truncatedValue" : 19.2 } { "_id" : 2, "truncatedValue" : 28.7 } { "_id" : 3, "truncatedValue" : 34.3 } { "_id" : 4, "truncatedValue" : -45.3 } 以下聚合返回将
value
截断到个位的结果db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", -1 ] } } } ]) 操作返回以下结果
{ "_id" : 1, "truncatedValue" : 10 } { "_id" : 2, "truncatedValue" : 20 } { "_id" : 3, "truncatedValue" : 30 } { "_id" : 4, "truncatedValue" : -40 } 以下聚合返回将
value
截断到整数的整个结果db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 0 ] } } } ]) 操作返回以下结果
{ "_id" : 1, "truncatedValue" : 19 } { "_id" : 2, "truncatedValue" : 28 } { "_id" : 3, "truncatedValue" : 34 } { "_id" : 4, "truncatedValue" : -45 }