En MongoDB, el $acosh El operador de tubería de agregación devuelve el arcocoseno hiperbólico (coseno hiperbólico inverso) de un valor, medido en radianes.
$acosh acepta cualquier expresión válida que se resuelva en un número entre 1 y +Infinity .
El $acosh 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 $acosh operador para devolver el arcocoseno hiperbólico de los data campo:
db.test.aggregate(
[
{ $project: {
_id: 0,
hyperbolicArccosine: { $acosh: "$data" }
}
}
]
) Resultado:
{ "hyperbolicArccosine" : 1.762747174039086 }
Por defecto, el $acosh 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.
Convertir a Grados
Como se mencionó, $acosh devuelve su resultado en radianes. Puede usar el $radiansToDegrees operador si desea el resultado en grados.
Ejemplo:
db.test.aggregate(
[
{ $project: {
_id: 0,
radians: { $acosh: "$data" },
degrees: { $radiansToDegrees: { $acosh: "$data" } }
}
}
]
) Resultado:
{ "radians" : 1.762747174039086, "degrees" : 100.99797342105244 } En este ejemplo, el primer campo presenta el resultado en radianes y el segundo campo lo presenta en grados.
Valores fuera de rango
Proporcionar un valor fuera de rango a $acosh resultará en un error.
Supongamos que agregamos el siguiente documento a la colección:
{ "_id" : 2, "data" : 0 }
Ahora ejecutemos $acosh contra los data campo:
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
radians: { $acosh: "$data" }
}
}
]
) Resultado:
uncaught exception: Error: command failed: {
"ok" : 0,
"errmsg" : "cannot apply $acosh to 0, value must in [1,inf]",
"code" : 50989,
"codeName" : "Location50989"
} : aggregate failed :
example@sqldat.com/mongo/shell/utils.js:25:13
example@sqldat.com/mongo/shell/assert.js:18:14
example@sqldat.com/mongo/shell/assert.js:618:17
example@sqldat.com/mongo/shell/assert.js:708:16
example@sqldat.com/mongo/shell/db.js:266:5
example@sqldat.com/mongo/shell/collection.js:1046:12
@(shell):1:1
Como indica el mensaje de error, el valor debe estar entre 1 y +Infinity .
Valores nulos
Los valores nulos devuelven null cuando se usa el $acosh operador.
Supongamos que agregamos el siguiente documento a nuestra colección:
{ "_id" : 3, "data" : null }
Ejecutemos el $acos operador contra ese documento:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $acosh: "$data" }
}
}
]
) Resultado:
{ "result" : null }
Podemos ver que el resultado es null .
Valores NaN
Si el argumento se resuelve en NaN , $acosh devuelve NaN .
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $acosh: 1 * "string" }
}
}
]
) Resultado:
{ "result" : 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 , el $acosh el operador devuelve Infinity .
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $acosh: Infinity }
}
}
]
) Resultado:
{ "result" : Infinity }
Sin embargo, -Infinity devolverá un error.
Campos Inexistentes
Si el $acosh el operador se aplica a un campo que no existe, null es devuelto.
Ejemplo:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $acosh: "$wrongField" }
}
}
]
) Resultado:
{ "result" : null }