$degreesToRadians将以度为单位的输入值转换为弧度。从版本4.2开始支持。
语法
{ $degreesToRadians: <expression> }
<expression>是能被解析为数值的表达式。默认情况下$degreesToRadians返回值为double类型,如果<expression>被解析为128-bit小数,返回值的类型也为128-bit小数。
使用
如果参数表达式被解析为null或不存在,则返回null。如果参数被解析为NaN则返回NaN,如果参数被解析为正无穷或负无穷,则返回值也为正无穷或负无穷,具体如下表:
| 表达式 | 返回值 |
|---|---|
{ $degreesToRadians: NaN } | NaN |
{ $degreesToRadians: null } | null |
{ $degreesToRadians : Infinity} | Infinity |
{ $degreesToRadians : -Infinity } | -Infinity |
举例
trigonometry集合的文档包含了一个三角形的三个角的度数:
{
"angle_a" : NumberDecimal("53.13010235415597870314438744090659"),
"angle_b" : NumberDecimal("36.86989764584402129685561255909341"),
"angle_c" : NumberDecimal("90")
}
下面的聚合操作使用$degreesToRadians表达式将角度值转换为弧度值,并使用$addFields管道将它们添加到输入文档。
db.trigonometry.aggregate([
{
$addFields: {
"angle_a_rad" : { $degreesToRadians : "$angle_a"},
"angle_b_rad" : { $degreesToRadians : "$angle_b"},
"angle_c_rad" : { $degreesToRadians : "$angle_c"}
}
}
])
操作返回下面的结果:
{
"_id" : ObjectId("5c50aec71c75c59232b3ede4"),
"angle_a" : NumberDecimal("53.13010235415597870314438744090660"),
"angle_b" : NumberDecimal("36.86989764584402129685561255909341"),
"angle_c" : NumberDecimal("90"),
"angle_a_rad" : NumberDecimal("0.9272952180016122324285124629224290"),
"angle_b_rad" : NumberDecimal("0.6435011087932843868028092287173227"),
"angle_c_rad" : NumberDecimal("1.570796326794896619231321691639752")
}
因为angle_a、angle_b和angle_c为128-bit小数,所以输出也是128-bit小数

4556

被折叠的 条评论
为什么被折叠?



