$atanDevuelve la tangente inversa (arco tangente) de un valor.
$atantiene la siguiente sintaxis:{ $atan: <expression> } $atantakes any valid expresión que produce como resultado un número.$atandevuelve valores en radianes. Utilice el operador$radiansToDegreespara convertir el valor de salida de radianes a grados.Por defecto,
$atandevuelve valores como undouble.$atantambié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.
Comportamiento
null y NaN
Si el argumento resuelve a un valor de null o hace referencia a un campo que falta, $atan devuelve null. Si el argumento se resuelve como NaN, $tan devuelve NaN.
Ejemplo | Resultados |
|---|---|
|
|
|
|
Ejemplo
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 $atan 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 : { $atan : { $divide : [ "$side_b", "$side_a" ] } } } } } ])
La expresión $radiansToDegrees convierte el valor en radianes devuelto por $atan 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 $atan 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 $atan 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" : { $atan : { $divide : [ "$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 $atan es un decimal de 128bits.