“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

$round(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$round

$round 将数字四舍五入为整数到指定的小数位数。

$round 通过以下语法实现:

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

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

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

<place>
整型

可选 可为能解析为 -20 到 100(不含)之间的整数的任意有效表达式。例如 -20 < place < 100。如果未指定,则默认为 0

  • 如果 <place> 解析为正整数,$round 会四舍五入到 <place> 位小数。

    例如,$round : [1234.5678, 2] 四舍五入到小数点后两位并返回 1234.57

  • 如果 <place> 解析为负整数,$round 使用小数点左边的数字 <place> 进行四舍五入。

    例如,$round : [1234.5678, -2] 使用小数点左边的第二位数字 (3) 并返回 1200

    如果 <place> 的绝对值等于或超过小数点左边的位数,$round 将返回 0

    例如,$round : [ 1234.5678, -4] 指定小数点左边的第四位数字。这等于小数点左边的位数,返回 0

  • 如果 <place> 解析为 0$round 使用小数点右边的第一位数字进行四舍五入,并返回四舍五入后的整数值。

    例如,$round : [1234.5678, 0] 会返回 1235

在对 5 值进行舍入时,$round 舍入到最接近的偶数值。例如,考虑以下示例文档:

{_id : 1, "value" : 10.5},
{_id : 2, "value" : 11.5},
{_id : 3, "value" : 12.5},
{_id : 4, "value" : 13.5}

$round : [ "$value", 0] 将返回以下内容:

{_id : 1, "value" : 10},
{_id : 2, "value" : 12},
{_id : 3, "value" : 12},
{_id : 4, "value" : 14}

10.5 最接近偶数值10,而值 11.512.5 最接近偶数值 12。与总是向上或向下舍入相比,舍入到最接近的偶数值可让舍入数据分布更加均匀。

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

  • 如果第一个参数解析为 null 值或引用了缺失的字段,$round 将返回 null

  • 如果第一个参数解析为 NaN$round 会返回 NaN

  • 如果第一个参数解析为负无穷大或正无穷大,$round 则会分别返回负无穷大或正无穷大。

例子
结果
{ $round: [ NaN, 1] }
NaN
{ $round: [ null, 1] }
null
{ $round : [ Infinity, 1 ] }
Infinity
{ $round : [ -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.39 }
]
)
  • 以下聚合返回四舍五入到小数点后第一位的 value

    db.samples.aggregate([
    { $project: { roundedValue: { $round: [ "$value", 1 ] } } }
    ])

    操作返回以下结果:

    { "_id" : 1, "roundedValue" : 19.2 }
    { "_id" : 2, "roundedValue" : 28.7 }
    { "_id" : 3, "roundedValue" : 34.3 }
    { "_id" : 4, "roundedValue" : -45.4 }
  • 以下聚合返回使用小数点左边第一位数字进行四舍五入的 value

    db.samples.aggregate([
    { $project: { roundedValue: { $round: [ "$value", -1 ] } } }
    ])

    操作返回以下结果:

    { "_id" : 1, "roundedValue" : 10 }
    { "_id" : 2, "roundedValue" : 20 }
    { "_id" : 3, "roundedValue" : 30 }
    { "_id" : 4, "roundedValue" : -50 }
  • 以下聚合将返回四舍五入为整数的 value

    db.samples.aggregate([
    { $project: { roundedValue: { $round: [ "$value", 0 ] } } }
    ])

    操作返回以下结果:

    { "_id" : 1, "roundedValue" : 19 }
    { "_id" : 2, "roundedValue" : 29 }
    { "_id" : 3, "roundedValue" : 34 }
    { "_id" : 4, "roundedValue" : -45 }
← $reverseArray(聚合)

在此页面上