MongoDB $round运算符

MongoDB $round运算符

MongoDB中的$round运算符是什么

MongoDB提供了多种算术表达式运算符。$round运算符是其中之一。该运算符用于将一个数字四舍五入到整数或指定的小数位数。

$round运算符的语法

{ $round : [ < number >, < place > ] }

重要点:

  1. <number> 可以是任何有效的表达式,直到解析为数字。<number> 的值必须是整数、双精度、十进制或长整型。如果<number> 不是非数值数据类型,则返回错误。
  2. <place> 可以是任何有效的可选表达式,解析为介于-20到100之间的整数。<place> 字段的以下条件是适用的:
条件 示例 输出
如果<place>解析为正整数,则会将小数侧的值四舍五入。 $round: [7896.1479, 3] 7896.15
如果<place>解析为负整数,则会将小数点左侧的<place>位数字四舍五入。 $round: [7843.1479, -2] 7800
如果<place>的绝对值大于或等于小数点左侧的数字个数,则返回0。 $round: [7875.1479, -5] 0
如果<place>解析为0,则会将小数点右侧第一个数字四舍五入,并返回四舍五入后的整数值。 $round: [7894.9879, 0] 7894

示例

假设我们有以下文档的产品集合。

{
        {
         "_id" : 1, 
         "name" : "pen",
         "data" : 11.29
        }
        {
         "_id" : 2, 
         "name" : "pencil",
         "data" : 10.32 
        }
        {
         "_id" : 3, 
         "name" : "box",
         "data" : 15.97 
        }
        {
         "_id" : 4, 
         "name" : "bottle",
         "data" : -12.38
        }
        {
         "_id" : 5, 
         "name" : "oval",
         "data" : 20.88
        }
        {
         "_id" : 6, 
         "name" : "triangle",
         "data" : 5
        }
        {
         "_id" : 7, 
         "name" : "bottle",
         "data" : -1
        }
}

示例1

在这个示例中,我们使用$round操作符将数据字段中的值四舍五入。

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

输出:

{
    "_id" : 1, 
    "data" : 11.29,
    "value" : 11
}
{
    "_id" : 2, 
    "data" : 10.32, 
    "value" : 10
}
{
    "_id" : 3, 
    "data" : 15.97, 
    "value" : 16
}
{
    "_id" : 4, 
    "data" : -12.38,
    "value" : -12
}
{
    "_id" : 5, 
    "data" : 20.88,
    "value" : 21
}
{
    "_id" : 6, 
    "data" : 5,
    "value" : 5
}
{
    "_id" : 7, 
    "data" : -1,
    "value" : -1
}

示例2:指定小数位

我们可以使用第二个参数来指定要舍入的小数位数。在此示例中,我们使用$round操作符来舍入数据字段中的值。

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

输出:

{
    "_id" : 1, 
    "data" : 11.29,
    "value" : 11.3
}
{
    "_id" : 2, 
    "data" : 10.32, 
    "value" : 10.3
}
{
    "_id" : 3, 
    "data" : 15.97, 
    "value" : 16
}
{
    "_id" : 4, 
    "data" : -12.38,
    "value" : -12.4
}
{
    "_id" : 5, 
    "data" : 20.88,
    "value" : 20.9
}
{
    "_id" : 6, 
    "data" : 5,
    "value" : 5
}
{
    "_id" : 7, 
    "data" : -1,
    "value" : -1
}

假设我们将以下文档添加到我们的集合中:

{
        {
         "_id" : 8, 
         "name" : "charge",
         "data" : 8611.1325
        }
        {
         "_id" : 9, 
         "name" : "pen",
         "data" : 1843.5632 
        }
        {
         "_id" : 10, 
         "name" : "chart",
         "data" : 5714.1397 
        }
        {
         "_id" : 11, 
         "name" : "glass",
         "data" :  2312.3012
        }
}

示例3:负小数位数

在这个示例中,我们使用$round操作符来将数据字段的值四舍五入为不同的负小数位数。

db.products.aggregate(
   [
     { match: { _id: {in: [ 8, 9, 10, 11 ] } } },
     {
       project:
          {
            data : 1,
            value_1 : {round [ "data", -1 ] },
            value_2 : {round [ "$data", -2 ] },
          }
     }
   ]
).pretty()

输出:

{
    "_id" : 8, 
    "data" : 8611.1325,
    "value_1" : 8610,
    "value_2" : 8600
}
{
    "_id" : 9, 
    "data" : 1843.5632, 
    "value_1" : 1840,
    "value_2" : 1800
}
{
    "_id" : 10, 
    "data" : 5714.1397, 
    "value_1" : 5710,
    "value_2" : 5700
}
{
    "_id" : 11, 
    "data" :  2312.3012,
    "value_1" : 2310,
    "value_2" : 2300,
}

**示例 4: <Place> 的值为零 **

<place>字段的值为0时,$round运算符会将小数点右侧的第一个数字四舍五入,并返回四舍五入后的值。在这个示例中,我们使用$round运算符来四舍五入数据字段中的值。

db.products.aggregate (
   [
     {
       project : {
                          data : 1,
                          value : {round : ["$data", 0]}
                        }
     }
   ]
)

输出:

{
    "_id" : 1, 
    "data" : 11.29,
    "value" : 11
}
{
    "_id" : 2, 
    "data" : 10.32, 
    "value" : 10
}
{
    "_id" : 3, 
    "data" : 15.97, 
    "value" : 16
}
{
    "_id" : 4, 
    "data" : -12.38,
    "value" : -12
}
{
    "_id" : 5, 
    "data" : 20.88,
    "value" : 21
}
{
    "_id" : 6, 
    "data" : 5,
    "value" : 5
}
{
    "_id" : 7, 
    "data" : -1,
    "value" : -1
}
{
    "_id" : 8, 
    "data" : 8611.1325,
    "value" : 8611     
}
{
    "_id" : 9, 
    "data" : 1843.5632, 
    "value" : 1843     
}
{
    "_id" : 10, 
    "data" : 5714.1397, 
    "value" : 5714      
}
{
    "_id" : 11, 
    "data" :  2312.3012,    
    "value" : 2312   
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程