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.