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

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



