V MongoDB, $degreesToRadians
operátor agregačního potrubí převede vstupní hodnotu měřenou ve stupních na radiány.
$degreesToRadians
přijímá jakýkoli platný výraz, který se překládá na číslo.
$degreesToRadians
operátor byl představen v MongoDB 4.2.
Příklad
Předpokládejme, že máme kolekci nazvanou test
s následujícím dokumentem:
{ "_id" :1, "data" :180 }
A předpokládejme, že hodnota data
pole je ve stupních (proto je v tomto případě 180
stupně).
Můžeme použít $degreesToRadians
operátor pro převod data
pole na radiány:
db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, stupně:"$data", radiány:{ $degreesToRadians:"$data" } } } ])
Výsledek:
{ "stupně" :180, "radiány" :3,141592653589793 }
Ve výchozím nastavení $degreesToRadians
operátor vrátí hodnoty jako double
, ale může také vracet hodnoty jako 128bitové desítkové číslo, pokud se výraz převede na 128bitovou desítkovou hodnotu.
128bitové desetinné hodnoty
Pokud je výraz poskytnut $degreesToRadians
je 128bitová desítková soustava, pak je výsledek vrácen ve 128bitové desítkové soustavě.
Předpokládejme, že do naší sbírky přidáme následující dokument:
{ "_id" :2, "data" :NumberDecimal("0,1301023541559787031443874490659") }
Spusťte $degreesToRadians
operátor proti tomuto dokumentu:
db.test.aggregate( [ { $match:{ _id:2 } }, { $project:{ _id:0, stupně:"$data", radiány:{ $degreesToRadians:"$data" } } } ]).pretty()
Výsledek:
{ "stupně" :NumberDecimal("90,1301023541559787031443874490659"), "radiány" :NumberDecimal("1,573067041239514175890278047405")>Výstup je 128bitový desítkový.
Nulové hodnoty
Hodnoty Null vrátí
null
při použití$degreesToRadians
operátor.Předpokládejme, že do naší sbírky přidáme následující dokument:
{ "_id" :3, "data" :null }Spusťte
$degreesToRadians
operátor proti tomuto dokumentu:db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, radiány:{ $degreesToRadians:"$data" } } } ])
Výsledek:
{ "radiány" :null }Vidíme, že výsledek je
null
.Hodnoty NaN
Pokud je argument vyřešen na
NaN
,$degreesToRadians
vrátíNaN
.Příklad:
db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, radiány:{ $degreesToRadians:0 * "$data" } } } ])
Výsledek:
{ "radiány" :NaN }Nekonečno
Pokud je argument vyřešen na
nekonečno
nebo-nekonečno
,$degreesToRadians
operátor vrátínekonečno
.Předpokládejme, že do naší sbírky přidáme následující dokument:
{ "_id" :4, "data" :Infinity }Spusťte
$degreesToRadians
proti datovému poli:db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, radiány:{ $degreesToRadians:"$data" } } } ])
Výsledek:
{ "radiány" :Nekonečno }Neexistující pole
Pokud
$degreesToRadians
operátor se použije na pole, které neexistuje,null
je vráceno.Příklad:
db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, radiány:{ $degreesToRadians:"$name" } } } ])
Výsledek:
{ "radiány" :null }V kombinaci s jinými operátory
Někteří operátoři agregačního potrubí přijímají své výrazy v radiánech. Pokud má pole hodnotu ve stupních, můžete kombinovat
$degreesToRadians
převést výraz na radiány.Předpokládejme, že máme kolekci nazvanou
test
s následujícím dokumentem:{ "_id" :1, "data" :3 }A v tomto případě je hodnota datového pole ve stupních.
Nyní předpokládejme, že chceme použít
$cosh
operátor vrátí hyperbolický kosinusdata
pole. Jediný problém je, že$cosh
operátor přijímá výrazy v radiánech.Žádný problém! Můžeme použít
$degreesToRadians
převést vstupní výraz na radiány.Příklad:
db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, hyperbolicCosine:{ $degreesToRadians:{ $cosh:"$data" } } } } ])
Výsledek:
{ "hyperbolicCosine" :0,17571384980422547 }