Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$trunc(聚合)

在此页面上

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

$trunc将数字截断为整数指定的小数位。

$trunc操作符的语法如下:

{ $trunc : [ <number>, <place> ] }
字段
类型
说明

<number>

数字

可以是解析为数字的任何有效表达式。 具体来说,表达式必须解析为整数、 double精度浮点数、 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 }

后退

$trim