In MongoDB die $radiansToDegrees
Aggregation-Pipeline-Operator wandelt einen im Bogenmaß gemessenen Eingabewert in Grad um.
$radiansToDegrees
akzeptiert jeden gültigen Ausdruck, der in eine Zahl aufgelöst wird.
Die $radiansToDegrees
-Operator wurde in MongoDB 4.2 eingeführt.
Beispiel
Angenommen, wir haben eine Sammlung namens test
mit folgendem Dokument:
{ "_id" : 1, "data" : 0.5 }
Und nehmen wir an, dass der Wert der data
Feld ist im Bogenmaß angegeben (d. h. 0.5
Radiant).
Wir können $radiansToDegrees
verwenden Operator zum Konvertieren der data
Feld in Grad:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
radians: "$data",
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Ergebnis:
{ "radians" : 0.5, "degrees" : 28.64788975654116 }
Standardmäßig ist die $radiansToDegrees
-Operator gibt Werte als double
zurück , aber es kann auch Werte als 128-Bit-Dezimalwert zurückgeben, solange der Ausdruck in einen 128-Bit-Dezimalwert aufgelöst wird.
128-Bit-Dezimalwerte
Wenn der Ausdruck für $radiansToDegrees
bereitgestellt wird 128-Bit-Dezimalzahl ist, wird das Ergebnis in 128-Bit-Dezimalzahl zurückgegeben.
Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:
{ "_id" : 2, "data" : NumberDecimal("0.1301023541559787031443874490659") }
Lassen Sie uns den $radiansToDegrees
ausführen Operator gegen dieses Dokument:
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
radians: "$data",
degrees: { $radiansToDegrees: "$data" }
}
}
]
).pretty()
Ergebnis:
{ "radians" : NumberDecimal("0.1301023541559787031443874490659"), "degrees" : NumberDecimal("7.454315797853905125952127312900524") }
Die Ausgabe ist 128-Bit dezimal.
Nullwerte
Nullwerte geben null
zurück bei Verwendung von $radiansToDegrees
Betreiber.
Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:
{ "_id" : 3, "data" : null }
Lassen Sie uns den $radiansToDegrees
ausführen Operator gegen dieses Dokument:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Ergebnis:
{ "degrees" : null }
Wir können sehen, dass das Ergebnis null
ist .
NaN-Werte
Wenn das Argument zu NaN
aufgelöst wird , $radiansToDegrees
gibt NaN
zurück .
Beispiel:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: 0 * "$data" }
}
}
]
)
Ergebnis:
{ "degrees" : NaN }
Unendlich
Wenn das Argument zu Infinity
aufgelöst wird oder -Infinity
, die $radiansToDegrees
Operator gibt Infinity
zurück .
Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:
{ "_id" : 4, "data" : Infinity }
Lassen Sie uns $radiansToDegrees
ausführen gegen das Datenfeld:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$data" }
}
}
]
)
Ergebnis:
{ "degrees" : Infinity }
Nicht vorhandene Felder
Wenn die $radiansToDegrees
-Operator wird auf ein nicht vorhandenes Feld angewendet, null
zurückgegeben wird.
Beispiel:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
degrees: { $radiansToDegrees: "$name" }
}
}
]
)
Ergebnis:
{ "degrees" : null }
Kombiniert mit anderen Operatoren
Einige Betreiber von Aggregationspipelines geben ihr Ergebnis in Radiant zurück. Sie können $radiansToDegrees
kombinieren mit solchen Operatoren, um das Ergebnis in Grad zurückzugeben.
Angenommen, wir haben eine Sammlung namens test
mit folgendem Dokument:
{ "_id" : 1, "data" : 0.5 }
Angenommen, wir möchten $asin
verwenden -Operator, um den Arkussinus der data
zurückzugeben Feld. Der $asin
Der Operator gibt sein Ergebnis im Bogenmaß zurück, aber nehmen wir an, wir wollen stattdessen das Ergebnis in Grad.
In diesem Fall können wir Folgendes tun:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
radians: { $asin: "$data" },
degrees: { $radiansToDegrees: { $asin: "$data" } }
}
}
]
)
Ergebnis:
{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }
In diesem Beispiel zeigt das erste Feld das Ergebnis in Bogenmaß und das zweite Feld in Grad an.