MongoDB $exp运算符
MongoDB提供了各种逻辑查询运算符。$exp
运算符是其中之一。$exp
运算符将欧拉数(e)提高到给定指数,并返回其操作的结果。
欧拉数(e)是什么
“e”数也被称为欧拉数。它是一个数学常数,约等于2.7182818284590452353602874713527。这个数只是近似值,因为它是无理数。欧拉数是自然对数的基数。
欧拉数值表:
Numbers | Exponent values |
---|---|
0 | 1 |
1 | 2.718281828459045 |
2 | 7.38905609893065 |
语法
{ $exp: }
指数表达式可以是任何解析为数字的有效表达式。
- 如果输入的指数参数值变为null,则$exp运算符返回null。
- 如果指数参数指向缺失字段,则$exp运算符返回null。
- 如果输入的指数参数值变为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 }