В MongoDB, $radiansToDegrees
Операторът на конвейера за агрегиране преобразува входна стойност, измерена в радиани, в градуси.
$radiansToDegrees
приема всеки валиден израз, който се разрешава до число.
$radiansToDegrees
операторът беше въведен в MongoDB 4.2.
Пример
Да предположим, че имаме колекция, наречена test
със следния документ:
{ "_id" :1, "data" :0,5 }
И нека приемем, че стойността на data
полето е в радиани (т.е. 0.5
радиани).
Можем да използваме $radiansToDegrees
оператор за преобразуване на данните
поле до градуси:
db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, радиани:"$data", градуси:{ $radiansToDegrees:"$data" } } } ])
Резултат:
{ "радиани" :0,5, "градуси" :28,64788975654116 }
По подразбиране $radiansToDegrees
операторът връща стойности като double
, но може също да връща стойности като 128-битова десетична стойност, стига изразът да се разреши до 128-битова десетична стойност.
128-битови десетични стойности
Ако изразът е предоставен на $radiansToDegrees
е 128-битов десетичен знак, след което резултатът се връща в 128-битов десетичен знак.
Да предположим, че добавяме следния документ към нашата колекция:
{ "_id" :2, "data" :NumberDecimal("0.1301023541559787031443874490659") }
Нека стартираме $radiansToDegrees
оператор срещу този документ:
db.test.aggregate( [ { $match:{ _id:2 } }, { $project:{ _id:0, радиани:"$data", градуси:{ $radiansToDegrees:"$data" } } } ]).pretty()
Резултат:
{ "radians" :NumberDecimal("0.1301023541559787031443874490659"), "degrees" :NumberDecimal("7.454315797853905125952127312900")2>2Изходът е 128-битов десетичен.
Нулеви стойности
Нулевите стойности връщат
null
когато използвате$radiansToDegrees
оператор.Да предположим, че добавяме следния документ към нашата колекция:
{ "_id" :3, "data" :null }Нека стартираме
$radiansToDegrees
оператор срещу този документ:db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, градуси:{ $radiansToDegrees:"$data" } } ])код>
Резултат:
{ "градуси" :нула }Можем да видим, че резултатът е
null
.NaN стойности
Ако аргументът се разреши до
NaN
,$radiansToDegrees
връщаNaN
.Пример:
db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, градуси:{ $radiansToDegrees:0 * "$data" } } } ])
Резултат:
{ "градуси" :NaN }Безкрайност
Ако аргументът се разреши до
Безкрайност
или-Infinity
,$radiansToDegrees
операторът връщаInfinity
.Да предположим, че добавяме следния документ към нашата колекция:
{ "_id" :4, "data" :Безкрайност }Нека изпълним
$radiansToDegrees
срещу полето за данни:db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, градуси:{ $radiansToDegrees:"$data" } } ])код>
Резултат:
{ "градуси" :Безкрайност }Несъществуващи полета
Ако
$radiansToDegrees
операторът се прилага срещу поле, което не съществува,null
се връща.Пример:
db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, градуси:{ $radiansToDegrees:"$name" } } } ])код>
Резултат:
{ "градуси" :нула }Комбинирано с други оператори
Някои оператори на тръбопроводи за агрегиране връщат резултата си в радиани. Можете да комбинирате
$radiansToDegrees
с такива оператори, за да върне резултата в градуси.Да предположим, че имаме колекция, наречена
test
със следния документ:{ "_id" :1, "data" :0,5 }И да предположим, че искаме да използваме
$asin
оператор за връщане на арксинуса наdata
поле.$asin
операторът връща резултата си в радиани, но да предположим, че вместо това искаме резултата в градуси.В този случай можем да направим следното:
db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, радиани:{ $asin:"$data" }, градуси:{ $radiansToDegrees :{ $asin:"$data" } } } } ])
Резултат:
{ "радиани" :0,5235987755982988, "градуси" :29,9999999999999996 }В този пример първото поле представя резултата в радиани, а второто поле го представя в градуси.