Dans MongoDB, le $radiansToDegrees
l'opérateur de pipeline d'agrégation convertit une valeur d'entrée mesurée en radians en degrés.
$radiansToDegrees
accepte toute expression valide qui se résout en un nombre.
Le $radiansToDegrees
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" : 0.5 }
Et supposons que la valeur de data
le champ est en radians (c'est-à-dire 0.5
radians).
Nous pouvons utiliser le $radiansToDegrees
opérateur pour convertir les data
champ en degrés :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
radians: "$data",
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Résultat :
{ "radians" : 0.5, "degrees" : 28.64788975654116 }
Par défaut, le $radiansToDegrees
l'opérateur renvoie les valeurs sous la forme d'un double
, mais il peut également renvoyer des valeurs sous la forme d'un décimal de 128 bits tant que l'expression se résout en une valeur décimale de 128 bits.
Valeurs décimales 128 bits
Si l'expression fournie à $radiansToDegrees
est décimal 128 bits, le résultat est renvoyé en décimal 128 bits.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 2, "data" : NumberDecimal("0.1301023541559787031443874490659") }
Exécutons le $radiansToDegrees
opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
radians: "$data",
degrees: { $radiansToDegrees: "$data" }
}
}
]
).pretty()
Résultat :
{ "radians" : NumberDecimal("0.1301023541559787031443874490659"), "degrees" : NumberDecimal("7.454315797853905125952127312900524") }
La sortie est décimale 128 bits.
Valeurs nulles
Les valeurs nulles renvoient null
lors de l'utilisation de $radiansToDegrees
opérateur.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 3, "data" : null }
Exécutons le $radiansToDegrees
opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Résultat :
{ "degrees" : null }
Nous pouvons voir que le résultat est null
.
Valeurs NaN
Si l'argument se résout en NaN
, $radiansToDegrees
renvoie NaN
.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: 0 * "$data" }
}
}
]
)
Résultat :
{ "degrees" : NaN }
Infini
Si l'argument se résout en Infinity
ou -Infinity
, le $radiansToDegrees
l'opérateur renvoie Infinity
.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 4, "data" : Infinity }
Exécutons $radiansToDegrees
contre le champ de données :
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Résultat :
{ "degrees" : Infinity }
Champs inexistants
Si le $radiansToDegrees
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,
degrees: { $radiansToDegrees: "$name" }
}
}
]
)
Résultat :
{ "degrees" : null }
Combiné avec d'autres opérateurs
Certains opérateurs de pipeline d'agrégation renvoient leur résultat en radians. Vous pouvez combiner $radiansToDegrees
avec de tels opérateurs pour renvoyer le résultat en degrés.
Supposons que nous ayons une collection appelée test
avec le document suivant :
{ "_id" : 1, "data" : 0.5 }
Et supposons que nous voulions utiliser le $asin
opérateur pour retourner l'arcsinus de la data
domaine. Le $asin
renvoie son résultat en radians, mais supposons que nous voulions plutôt le résultat en degrés.
Dans ce cas, nous pouvons procéder comme suit :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
radians: { $asin: "$data" },
degrees: { $radiansToDegrees: { $asin: "$data" } }
}
}
]
)
Résultat :
{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }
Dans cet exemple, le premier champ présente le résultat en radians et le second le présente en degrés.