MongoDB聚合运算符:$tanh
$tanh
用来计算双曲正切,返回指定弧度的双曲正切值。从MongoDB4.2版本开始支持。
语法
{ $tanh: <expression> }
<expression>
为可被解析为数值的表达式,如果表达式返回以度为单位的值,应使用$DegreesToRadians
运算符将其转换为弧度。$tanh
默认返回双精度数double
,如果表达式<expression>
解析为128-bit decimal
则返回同样类型。
使用
如果参数解析为null
或引用不存在的字段,则结果返回null
,如果参数解析为NaN
,如果参数解析为负无穷大或正无穷大,则分别返回-1或1,如下表所示:
示例 | 结果 |
---|---|
{ $tanh: NaN } |
NaN |
{ $tanh: null } |
null |
{ $tanh: -Infinity } |
-1 |
{ $tanh: Infinity } |
1 |
举例
角度的双曲正切
使用下面的脚本创建trigonometry
集合,包含一个文档,存储了以度为单位的角度:
db.trigonometry.insertOne(
{
"_id" : ObjectId( "5c50782193f833234ba90d45" ),
"angle" : NumberDecimal( "53.1301023541559787031443874490659" )
}
)
下面的聚合操作使用$tanh
表达式计算角度angle
的双曲正切值,然后使用$addFields
管道阶段将其添加到输入文档。
db.trigonometry.aggregate( [
{
$addFields : {
"tanh_output" : { $tanh : { $degreesToRadians : "$angle" } }
}
}
] )
$degsToRadians
表达式将angle
的角度值转换为弧度值。
执行的结果为:
{
"_id" : ObjectId("5c50782193f833234ba90d45"),
"angle" : NumberDecimal("53.1301023541559787031443874490659"),
"tanh_output" : NumberDecimal("0.7293303448445332820512777329448416")
}
由于angle
为128位小数,因此$tanh
的输出是128位小数。
弧度的双曲正切
使用下面的脚本创建trigonometry
集合,中有下面的文档,包含了弧度为角度的值:
db.trigonometry.insertOne(
{
"_id" : ObjectId( "5c50782193f833234ba90d55" ),
"angle" : NumberDecimal( "1.6301023541559787031443874490659" )
}
)
以下聚合操作使用$tanh
表达式来计算角度的双曲正切值,并使用$addFields
管道阶段将其添加到输入文档:
db.trigonometry.aggregate( [
{
$addFields : {
"tanh_output" : { $tanh : "$angle" }
}
}
] )
结果为:
{
"_id" : ObjectId("5c50782193f833234ba90d55"),
"angle" : NumberDecimal("1.6301023541559787031443874490659"),
"tanh_output" : NumberDecimal("0.9260761562750713360156803177935379")
}
由于angle
为128位小数,因此$tanh
的输出是128位小数。