$acosh
操作符返回给定值的反双曲余弦。
语法
js
{ $acosh: <expression> }
$acosh
的可以接受解析为1
到正无穷之间数字的表达式,即1 <= value <= +∞
。$acosh
返回值以弧度为单位,使用$radiansToDegrees
操作符可以把输出值由弧度转换为角度。- 缺省情况下
$acosh
范围值为double
,如果<expression>
的值被解析为128-bit decimal
,$acosh
也会返回128-bit decimal
。
使用
null、NaN和±∞
如果参数被解析为null
或应用不存在的字段,$acosh
返回null
;如果参数为解析为NaN
,$acosh
返回NaN
;如果参数解析为负无穷,即value∉[-1,1]
,$acosh
将抛出错误;如果参数解析为正无穷,$acosh
返回正无穷;如果参数解析的结果超出边界值[-1, 正无穷]
,$acosh
抛出错误。
参数举例 | 返回值 |
---|---|
{ $acos: NaN } |
NaN |
{ $acos: null } |
null |
{ $acos : 正无穷} |
正无穷 |
{ $acosh : 0 } |
抛出异常: "errmsg" : "Failed to optimize pipeline :: caused by :: cannot apply $acos to -inf, value must in [1,inf]" |
举例
以度数为单位的反双曲余弦
trigonometry
集合包含一个文档,用于存储二维图形x
轴上的数值:
json
{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"x-coordinate" : NumberDecimal("3")
}
下面的聚合操作使用$acosh
表达式计算x-coordinate
的反双曲余弦值,并使用$addFields
管道阶段将其添加到输入文档。
js
db.trigonometry.aggregate([
{
$addFields : {
"y-coordinate" : {
$radiansToDegrees : { $acosh : "$x-coordinate" }
}
}
}
])
$radiansToDegrees
表达式将$acosh
返回的弧度值转换为度数。
上面的命令执行后返回下面的结果:
json
{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"x-coordinate" : NumberDecimal("3"),
"y-coordinate" : NumberDecimal("100.9979734210524228844295260083432")
}
由于x-coordinate
使用128-bit decimal
,所以$acosh
也输出128-bit decimal
以弧度为单位的反双曲余弦
以上例数据为基础,执行下面的命令:
js
db.trigonometry.aggregate([
{
$addFields : {
"y-coordinate" : {
$acosh : "$x-coordinate"
}
}
}
])
返回结果:
json
{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"x-coordinate" : NumberDecimal("3"),
"y-coordinate" : NumberDecimal("1.762747174039086050465218649959585")
}