Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Operadores de pipeline de agregación

$atan2 (operador de expresión)

$atan2

Devuelve la tangente inversa (arco tangente) de y / x, donde y y x son el primer y segundo valor pasados ​​a la expresión respectivamente.

$atan2 tiene la siguiente sintaxis:

{ $atan2: [ <expression 1>, <expression 2> ] }

$atan2 takes any valid expresión que produce como resultado un número.

$atan2 devuelve valores en radianes. Utilice el operador $radiansToDegrees para convertir el valor de salida de radianes a grados.

Por defecto, $atan2 devuelve valores como un double. $atan2 también puede devolver valores como un decimal de128-bits, siempre y cuando el <expression> se resuelva en un valor decimal de 128-bits.

Para obtener más información sobre las expresiones, consulta Expresiones.

Si alguno de los argumentos dados a $atan2 es null, la expresión devuelve null. Si alguno de los argumentos es NaN, la expresión devuelve NaN. Si un argumento es null y el otro es NaN, la expresión devuelve null.

Ejemplo
Resultados

{ $atan2: [ NaN, <value> ] }

NaN

{ $atan2: [ <value>, NaN ] }

NaN

{ $atan2: [ null, <value> ] }

null

{ $atan2: [ <value>, null ] }

null

{ $atan2: [ NaN, null ] }

null

{ $atan2: [ null, NaN ] }

null

La colección trigonometry contiene un documento que almacena los tres lados de un triángulo rectángulo:

{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"side_a" : Decimal128("3"),
"side_b" : Decimal128("4"),
"hypotenuse" : Decimal128("5")
}

La siguiente operación de agregación utiliza la expresión $atan2 para calcular el ángulo adyacente a side_a y agregarlo al documento de entrada usando la etapa de pipeline $addFields.

db.trigonometry.aggregate([
{
$addFields : {
"angle_a" : {
$radiansToDegrees : {
$atan2 : [ "$side_b", "$side_a" ]
}
}
}
}
])

La expresión $radiansToDegrees convierte el valor en radianes devuelto por $atan2 al valor equivalente en grados.

El comando devuelve la siguiente salida:

{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"side_a" : Decimal128("3"),
"side_b" : Decimal128("4"),
"hypotenuse" : Decimal128("5"),
"angle_a" : Decimal128("53.13010235415597870314438744090658")
}

Dado que side_b y side_a se almacenan como decimales de128bits, la salida de $atan2 es un decimal de 128bits.

La colección trigonometry contiene un documento que almacena los tres lados de un triángulo rectángulo:

{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"side_a" : Decimal128("3"),
"side_b" : Decimal128("4"),
"hypotenuse" : Decimal128("5")
}

La siguiente operación de agregación utiliza la expresión $atan2 para calcular el ángulo adyacente a side_a y agregarlo al documento de entrada usando la etapa de pipeline $addFields.

db.trigonometry.aggregate([
{
$addFields : {
"angle_a" : {
$atan2 : [ "$side_b", "$side_a" ]
}
}
}
])

El comando devuelve la siguiente salida:

{
"_id" : ObjectId("5c50782193f833234ba90d85"),
"side_a" : Decimal128("3"),
"side_b" : Decimal128("4"),
"hypotenuse" : Decimal128("5"),
"angle_a" : Decimal128("0.9272952180016122324285124629224287")
}

Dado que side_b y side_a se almacenan como decimales de128bits, la salida de $atan2 es un decimal de 128bits.

Volver

$atan

En esta página