Dans MongoDB, le $cosh
l'opérateur de pipeline d'agrégation renvoie le cosinus hyperbolique d'une valeur mesurée en radians.
$cosh
accepte toute expression valide qui se résout en un nombre.
Le $cosh
L'opérateur a été introduit dans MongoDB 4.2.
Exemple
Supposons que nous ayons une collection appelée test
avec le document suivant :
{ "_id" : 1, "data" : 3 }
Nous pouvons utiliser le $cosh
opérateur pour retourner le cosinus de la data
champ :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : 10.067661995777765 }
Par défaut, le $cosh
l'opérateur renvoie les valeurs sous la forme d'un double
, mais il peut également renvoyer des valeurs sous forme décimale de 128 bits tant que l'expression se résout en une valeur décimale de 128 bits.
Lorsque l'expression est en degrés
Comme mentionné, $cosh
accepte son expression en radians. Vous pouvez utiliser le $degreesToRadians
opérateur pour convertir toutes les valeurs de degrés en radians.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $degreesToRadians: { $cosh: "$data" } }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : 0.17571384980422547 }
Valeurs nulles
Les valeurs nulles renvoient null
lors de l'utilisation du $cosh
opérateur.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 3, "data" : null }
Lançons le $cosh
opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : null }
Nous pouvons voir que le résultat est null
.
Valeurs NaN
Si l'argument se résout en NaN
, $cosh
renvoie NaN
.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: 1 * "string" }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : NaN }
Dans ce cas, j'ai essayé de multiplier un nombre par une chaîne, ce qui a donné NaN
être retourné.
Infini
Si l'argument se résout en Infinity
ou -Infinity
, le $cosh
l'opérateur renvoie Infinity
.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 4, "data" : Infinity }
Lançons $cosh
contre le champ de données :
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : Infinity }
Champs inexistants
Si le $cosh
l'opérateur est appliqué sur un champ qui n'existe pas, null
est renvoyé.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$name" }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : null }
Décimal 128 bits
Comme mentionné, si l'expression fournie à $cosh
est décimal 128 bits, le résultat est renvoyé en décimal 128 bits.
Supposons que nous ajoutions le document suivant à la collection :
{ "_id" : 5, "data" : NumberDecimal("1.1301023541559787031443874490659") }
Voici ce qui se passe lorsque nous exécutons cela via le $cosh
opérateur :
db.test.aggregate(
[
{ $match: { _id: 5 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Résultat :
{ "hyperbolicCosine" : NumberDecimal("1.709486781983575502518713909095045") }
La sortie est décimale 128 bits.