En MongoDB, el $radiansToDegrees
El operador de tubería de agregación convierte un valor de entrada medido en radianes a grados.
$radiansToDegrees
acepta cualquier expresión válida que se resuelva en un número.
El $radiansToDegrees
El operador se introdujo en MongoDB 4.2.
Ejemplo
Supongamos que tenemos una colección llamada test
con el siguiente documento:
{ "_id" : 1, "data" : 0.5 }
Y supongamos que el valor de los data
el campo está en radianes (es decir, 0.5
radianes).
Podemos usar el $radiansToDegrees
operador para convertir los data
campo a grados:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
radians: "$data",
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Resultado:
{ "radians" : 0.5, "degrees" : 28.64788975654116 }
De forma predeterminada, $radiansToDegrees
el operador devuelve valores como double
, pero también puede devolver valores como un decimal de 128 bits siempre que la expresión se resuelva en un valor decimal de 128 bits.
Valores decimales de 128 bits
Si la expresión proporcionada a $radiansToDegrees
es decimal de 128 bits, entonces el resultado se devuelve en decimal de 128 bits.
Supongamos que agregamos el siguiente documento a nuestra colección:
{ "_id" : 2, "data" : NumberDecimal("0.1301023541559787031443874490659") }
Ejecutemos el $radiansToDegrees
operador contra ese documento:
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
radians: "$data",
degrees: { $radiansToDegrees: "$data" }
}
}
]
).pretty()
Resultado:
{ "radians" : NumberDecimal("0.1301023541559787031443874490659"), "degrees" : NumberDecimal("7.454315797853905125952127312900524") }
La salida es decimal de 128 bits.
Valores nulos
Los valores nulos devuelven null
cuando se usa $radiansToDegrees
operador.
Supongamos que agregamos el siguiente documento a nuestra colección:
{ "_id" : 3, "data" : null }
Ejecutemos el $radiansToDegrees
operador contra ese documento:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Resultado:
{ "degrees" : null }
Podemos ver que el resultado es null
.
Valores NaN
Si el argumento se resuelve en NaN
, $radiansToDegrees
devuelve NaN
.
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: 0 * "$data" }
}
}
]
)
Resultado:
{ "degrees" : NaN }
Infinito
Si el argumento se resuelve en Infinity
o -Infinity
, el $radiansToDegrees
el operador devuelve Infinity
.
Supongamos que agregamos el siguiente documento a nuestra colección:
{ "_id" : 4, "data" : Infinity }
Ejecutemos $radiansToDegrees
contra el campo de datos:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Resultado:
{ "degrees" : Infinity }
Campos Inexistentes
Si el $radiansToDegrees
el operador se aplica a un campo que no existe, null
es devuelto.
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$name" }
}
}
]
)
Resultado:
{ "degrees" : null }
Combinado con otros operadores
Algunos operadores de tubería de agregación devuelven su resultado en radianes. Puede combinar $radiansToDegrees
con dichos operadores para devolver el resultado en grados.
Supongamos que tenemos una colección llamada test
con el siguiente documento:
{ "_id" : 1, "data" : 0.5 }
Y supongamos que queremos usar el $asin
operador para devolver el arcoseno de los data
campo. El $asin
operador devuelve su resultado en radianes, pero supongamos que queremos el resultado en grados.
En este caso, podemos hacer lo siguiente:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
radians: { $asin: "$data" },
degrees: { $radiansToDegrees: { $asin: "$data" } }
}
}
]
)
Resultado:
{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }
En este ejemplo, el primer campo presenta el resultado en radianes y el segundo campo lo presenta en grados.