MongoDB $exp运算符

MongoDB $exp运算符

MongoDB提供了各种逻辑查询运算符。$exp运算符是其中之一。$exp运算符将欧拉数(e)提高到给定指数,并返回其操作的结果。

欧拉数(e)是什么

“e”数也被称为欧拉数。它是一个数学常数,约等于2.7182818284590452353602874713527。这个数只是近似值,因为它是无理数。欧拉数是自然对数的基数。

欧拉数值表:

Numbers Exponent values
0 1
1 2.718281828459045
2 7.38905609893065

语法

{ $exp:  }

指数表达式可以是任何解析为数字的有效表达式。

  1. 如果输入的指数参数值变为null,则$exp运算符返回null。
  2. 如果指数参数指向缺失字段,则$exp运算符返回null。
  3. 如果输入的指数参数值变为NaN,则$exp运算符返回NaN。

示例

在以下示例中,我们使用以下内容:

Database: JavaTpoint
Collection: example1
Document: Four documents that contain the details of the example1
>db.example1.find().pretty()
{
        {
         "_id" : 1, 
         "name" : "circle",
         "area" : 9
        }
        {
         "_id" : 2, 
         "name" : "square",
         "area" : 1
        }
        {
         "_id" : 3, 
         "name" : "rectangle",
         "area" : 10,
         "unit" : { 
                           "height" : 2,
                           "width" : 3
                         }
        }
        {
         "_id" : 4, 
         "name" : "triangle",
         "area" : 5
        }
}

示例 1:使用$exp运算符

在这个示例中,我们将$exp运算符应用于”area”字段。

db.example1.aggregate(
   [
     { match: { _id: {in: [ 1, 2, 3, 4 ] } } },
     {
       project:
          {
            _id: 0,
            area: 1,
            result: {exp: "$area" }
          }
     }
   ]
)

输出:

{ "area" : 9, "result" : 8103.083927575384 }
{ "area" : 1, "result" : 2.718281828459045 }
{ "area" : 10, "result" : 22026.46579480672 }
{ "area" : 5, "result" : 148.4131591025766 }

示例2:在嵌入式文档中使用$exp运算符

在此示例中,我们将$exp运算符应用于矩形的高度和宽度字段之间的差值。

db.example1.aggregate(
 [ 
    { match: {id: "3"}},
     {project:  
         {
            result: {exp: {subtract: ["unit.height", "unit.width"]}}
         }
     }
 ]
)

输出:

{ "-id" : 3, "result" : 0.367879441171442 }

其它示例

在下面的示例中,我们使用:

Database: JavaTpoint
Collection: example2
Document: Four documents that contain the details of the example1
>db.example1.find().pretty()
{
        {
         "_id" : 1, 
         "name" : "circle",
         "area" : null
        }
        {
         "_id" : 2, 
         "name" : "square",
         "data" : infinity
        }
        {
         "_id" : 3, 
         "name" : "rectangle",
         "data" : -infinity
        }
}

示例3:空值

在这个示例中,我们将$exp运算符应用于“area”字段。

db.example2.aggregate(
   [
     { match: { _id: 1 } },
     {project:
          {
            _id: 0,
            data: 1,
            result: { exp: "area" }
          }
     }
   ]
)

输出结果:

{ "area" : null, "result" : null }

这里,”area”字段的值为null,所以返回null。

示例4:缺少字段

在这个示例中,我们将$exp运算符应用到”perimeter”字段。

db.example2.aggregate(
   [
     {
       project:
          {
            result: {exp: "$perimeter" }
          }
     }
   ]
)

输出:

{ "_id" : 1, "result" : null }
{ "_id" : 2, "result" : null }
{ "_id" : 3, "result" : null }

示例5:无穷大值

db.example2.aggregate(
   [
     { match: { _id: {in: [ 2, 3 ] } } },
     {
       project:
          {
            _id: 0,
            data: 1,
            result: {exp: "$data" }
          }
     }
   ]
)

输出:

{ "data" : Infinity, "result" : Infinity }
{ "data" : -Infinity, "result" : 0 }

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程