En MongoDB, el $cosh
El operador de tubería de agregación devuelve el coseno hiperbólico de un valor que se mide en radianes.
$cosh
acepta cualquier expresión válida que se resuelva en un número.
El $cosh
El operador se introdujo en MongoDB 4.2.
Ejemplo
Supongamos que tenemos una colección llamada test
con el siguiente documento:
{ "_id" : 1, "data" : 3 }
Podemos usar el $cosh
operador para devolver el coseno de los data
campo:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : 10.067661995777765 }
Por defecto, el $cosh
operador devuelve valores como un 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.
Cuando la Expresión está en Grados
Como se mencionó, $cosh
acepta su expresión en radianes. Puede usar el $degreesToRadians
operador para convertir cualquier valor de grados a radianes.
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $degreesToRadians: { $cosh: "$data" } }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : 0.17571384980422547 }
Valores nulos
Los valores nulos devuelven null
cuando se usa el $cosh
operador.
Supongamos que agregamos el siguiente documento a nuestra colección:
{ "_id" : 3, "data" : null }
Ejecutemos el $cosh
operador contra ese documento:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : null }
Podemos ver que el resultado es null
.
Valores NaN
Si el argumento se resuelve en NaN
, $cosh
devuelve NaN
.
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: 1 * "string" }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : NaN }
En este caso, intenté multiplicar un número por una cadena, lo que resultó en NaN
siendo devuelto.
Infinito
Si el argumento se resuelve en Infinity
o -Infinity
, el $cosh
el operador devuelve Infinity
.
Supongamos que agregamos el siguiente documento a nuestra colección:
{ "_id" : 4, "data" : Infinity }
Ejecutemos $cosh
contra el campo de datos:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : Infinity }
Campos Inexistentes
Si el $cosh
el operador se aplica a un campo que no existe, null
es devuelto.
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$name" }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : null }
Decimal de 128 bits
Como se mencionó, si la expresión proporcionada a $cosh
es decimal de 128 bits, entonces el resultado se devuelve en decimal de 128 bits.
Supongamos que agregamos el siguiente documento a la colección:
{ "_id" : 5, "data" : NumberDecimal("1.1301023541559787031443874490659") }
Esto es lo que sucede cuando lo ejecutamos a través de $cosh
operador:
db.test.aggregate(
[
{ $match: { _id: 5 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Resultado:
{ "hyperbolicCosine" : NumberDecimal("1.709486781983575502518713909095045") }
La salida es decimal de 128 bits.