文章目录
- 语法
- 使用
- 举例
- 余弦值角度
- 余弦值弧度
$cos
聚合运算符用来计算余弦值,返回指定表达式的余弦值。
语法
{ $cos: <expression> }
<expression>
为可被解析为数值的表达式$cos
返回弧度,使用$radiansToDegrees
运算符可以把弧度转换为角度$cos
默认返回双精度数double
,如果表达式<expression>
解析为128-bit decimal
则返回同样类型。
使用
如果参数解析为null
或引用不存在的字段,则结果返回null
;如果参数解析为NaN
,返回NaN
;如果参数为负无穷或正无穷,则会报错。如果如下表所示:
示例 | 结果 |
---|---|
{ $cos: NaN } | NaN |
{ $cos: null } | null |
{ $cos: 正无穷 } | 报错 |
{ $cos: 负无穷 } | 报错 |
举例
余弦值角度
trigonometry
集合中有下面的文档,包含了直角三角形的斜边和一个角:
{"_id" : ObjectId("5c50782193f833234ba90d85"),"angle_a" : NumberDecimal("53.13010235415597870314438744090659"),"hypotenuse" : NumberDecimal("5")
}
下面的聚合操作使用$cos
表达式计算与角angle_a
相邻的边,然后使用$radiansToDegrees
运算符将结果转换为度数,最后使用$addFields
管道阶段将其添加到输入文档。
db.trigonometry.aggregate([{$addFields : {"side_a" : {$multiply : [{ $cos : {$degreesToRadians : "$angle_a"} },"$hypotenuse"]}}}
])
执行的结果为:
{"_id" : ObjectId("5c50782193f833234ba90d85"),"angle_a" : NumberDecimal("53.13010235415597870314438744090659"),"side_a" : NumberDecimal("2.999999999999999999999999999999999"),"hypotenuse" : NumberDecimal("5"),
}
余弦值弧度
trigonometry
集合中有下面的文档,包含了直角三角形的斜边和一个角:
{"_id" : ObjectId("5c50782193f833234ba90d85"),"angle_a" : NumberDecimal("0.9272952180016122324285124629224288"),"hypotenuse" : NumberDecimal("5")
}
下面的聚合操作使用$cos
表达式计算与角angle_a
相邻的边,然后使用$addFields
管道阶段将其添加到输入文档。
db.trigonometry.aggregate([{$addFields : {"side_b" : {$multiply : [{ $cos : "$angle_a" },"$hypotenuse"]}}}
])
结果为:
{"_id" : ObjectId("5c50782193f833234ba90d85"),"angle_a" : NumberDecimal("0.9272952180016122324285124629224288"),"side_b" : NumberDecimal("3.000000000000000000000000000000000"),"hypotenuse" : NumberDecimal("5"),
}