文档菜单
文档首页
/
MongoDB 手册
/ / /

截断(聚合)

本页

  • 定义
  • 语法
  • 行为
  • 示例
$trunc

$trunc 截断数字到一个整数 指定的十进制位数。

操作符 $trunc 语法如下

{ $trunc : [ <number>, <place> ] }
字段
类型
描述
<number>
数字

可以是任何有效的表达式,其结果为数字。具体来说,表达式必须解析为整数、双精度浮点数、decimallong

如果表达式解析为非数字数据类型,$trunc 返回错误。

<place>
整数

可选 可以是任何有效的 表达式,其结果为介于 -20 和 100 之间的整数(不含这两个数)。例如,-20 < place < 100。未指定时默认为 0。

  • 如果 <place> 解析为正整数,$trunc 将截断到 <place> 位小数。

    例如,$trunc : [1234.5678, 2] 截断到两位小数并返回 1234.56

  • 如果 <place> 解析为负整数,$trunc 将小数点左侧的 <place> 位数字替换为 0

    例如,$trunc : [1234.5678, -2] 将小数点左侧的前两位数字替换为 0 并返回 1200

  • 如果 <place> 的绝对值超过小数点左侧的位数,$trunc 返回 0

    例如,$trunc : [ 1234.5678, -5] 指定了小数点左侧第五位数字。这超过了小数点左侧的位数并返回 0

  • 如果 <place> 解析为 0$trunc 将截断所有小数位并返回整数值。

    例如,$trunc : [1234.5678, 0] 返回 1234

表达式 <number> 可以是任何有效的表达式,只要其结果为数字即可。有关表达式的更多信息,请参阅表达式运算符。

$trunc 表达式不会对截断的数据进行四舍五入。要四舍五入输入值到指定的位置,请使用$round 表达式。

返回的数据类型与输入表达式或值的类型匹配。

  • 如果参数解析为 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 }

返回

删除字符串两端空白字符