MongoDB $exp 运算符

MongoDB 提供了多种逻辑查询运算符。$exp 运算符就是这些运算符之一。$exe 运算符将欧拉数 (e) 提高到给定指数并返回其运算结果。

欧拉数 (e) 是多少?

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

欧拉数值表:

数字 指数值
0 1
1 2.718281828459045
2 7.38905609893065

语法

{ $exp: <exponent> }  

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

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

例子

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

Database: Yiidian
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 运算符应用于“区域”字段。

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: Yiidian
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:Null值

在此示例中,我们将 $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 }

 

热门文章

优秀文章