MongoDB $trunc 运算符介绍

$trunc 是 MongoDB 的一个聚合管道运算符,用于将数字截断为指定的小数位数或整数。它可以接受一个或两个参数,第一个参数是要截断的数字,第二个参数是要保留的小数位数(可选,默认为 0)。如果指定的小数位数为正数,则表示截断小数位数,如果为负数,则表示截断整数位数。

语法

$trunc 运算符的语法如下:

{ $trunc: { <number>, <numDigits> } }

其中,<number> 是要截断的数字,可以是任意的数字表达式,例如字段名、数字字面量或者其他聚合表达式;<numDigits> 是要保留的小数位数,可以是一个整数或者一个数字表达式。

使用场景

$trunc 运算符通常用于需要将数字截断为指定位数的场景,例如在处理金融数据时需要将金额四舍五入到指定的小数位数,或者需要将经纬度数据截断为指定的精度等。

示例

示例数据

假设有一个名为 sales 的集合,其中存储了销售数据,如下所示:

{ "_id" : 1, "product" : "A", "amount" : 1234.5678 }
{ "_id" : 2, "product" : "B", "amount" : 987.6543 }
{ "_id" : 3, "product" : "C", "amount" : 456.7890 }

示例 1

下面的聚合管道使用 $trunc 运算符将 amount 字段的值截断为两位小数:

db.sales.aggregate([
  {
    $project: {
      product: 1,
      truncatedAmount: { $trunc: ["$amount", 2] }
    }
  }
])

运行上述聚合管道后,得到如下的结果:

{ "_id" : 1, "product" : "A", "truncatedAmount" : 1234.56 }
{ "_id" : 2, "product" : "B", "truncatedAmount" : 987.65 }
{ "_id" : 3, "product" : "C", "truncatedAmount" : 456.78 }

上述结果中,amount 字段的值被截断为了两位小数,并且新的字段 truncatedAmount 中保存了截断后的结果。

示例 2

下面的聚合管道使用 $trunc 运算符将 amount 字段的值截断为整数:

db.sales.aggregate([
  {
    $project: {
      product: 1,
      truncatedAmount: { $trunc: ["$amount", 0] }
    }
  }
])

运行上述聚合管道后,得到如下的结果:

{ "_id" : 1, "product" : "A", "truncatedAmount" : 1234.56 }
{ "_id" : 2, "product" : "B", "truncatedAmount" : 987.65 }
{ "_id" : 3, "product" : "C", "truncatedAmount" : 456.78 }

结论

在本文中,我们学习了 $trunc 运算符的用法和示例。 $trunc 运算符用于将数字截断为指定的小数位数或整数位数。它在 MongoDB 的聚合管道中非常有用,因为它允许我们以指定的精度来处理数字数据。

使用 $trunc 运算符时,需要注意以下几点:

  • $trunc 运算符只能应用于数字类型字段。
  • $trunc 运算符必须指定截断的小数位数或整数位数。
  • $trunc 运算符返回的值始终是一个数字,即使输入不是数字类型。

总的来说, $trunc 运算符是 MongoDB 聚合管道中非常有用的一个运算符,它可以帮助我们以指定的精度来处理数字数据。