V MongoDB, $radiansToDegrees operátor agregačního potrubí převede vstupní hodnotu měřenou v radiánech na stupně.
$radiansToDegrees přijímá jakýkoli platný výraz, který se překládá na číslo.
$radiansToDegrees 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" :0,5 }
A předpokládejme, že hodnota data pole je v radiánech (tj. 0,5 radiány).
Můžeme použít $radiansToDegrees operátor pro převod data pole na stupně:
db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, radiány:"$data", stupně:{ $radiansToDegrees:"$data" } } } ]) Výsledek:
{ "radiány" :0,5, "stupně" :28,64788975654116 }
Ve výchozím nastavení $radiansToDegrees 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ý $radiansToDegrees 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 $radiansToDegrees operátor proti tomuto dokumentu:
db.test.aggregate( [ { $match:{ _id:2 } }, { $project:{ _id:0, radiány:"$data", stupně:{ $radiansToDegrees:"$data" } } } ]).pretty() Výsledek:
{ "radiány" :NumberDecimal("0,1301023541559787031443874490659"), "stupně" :NumberDecimal("7,4543157978539051259521272429005")>
Výstup je 128bitový desítkový.
Nulové hodnoty
Hodnoty Null vrátí null při použití $radiansToDegrees operátor.
Předpokládejme, že do naší sbírky přidáme následující dokument:
{ "_id" :3, "data" :null }
Spusťte $radiansToDegrees operátor proti tomuto dokumentu:
db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, stupně:{ $radiansToDegrees:"$data" } } } ])
Výsledek:
{ "stupně" :null }
Vidíme, že výsledek je null .
Hodnoty NaN
Pokud je argument vyřešen na NaN , $radiansToDegrees vrátí NaN .
Příklad:
db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, stupně:{ $radiansToDegrees:0 * "$data" } } } ])
Výsledek:
{ "stupně" :NaN } Nekonečno
Pokud je argument vyřešen na nekonečno nebo -nekonečno , $radiansToDegrees 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 $radiansToDegrees proti datovému poli:
db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, stupně:{ $radiansToDegrees:"$data" } } } ])
Výsledek:
{ "stupně" :nekonečno } Neexistující pole
Pokud je $radiansToDegrees operátor se použije na pole, které neexistuje, null je vráceno.
Příklad:
db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, stupně:{ $radiansToDegrees:"$name" } } } ])
Výsledek:
{ "stupně" :null } V kombinaci s jinými operátory
Někteří operátoři agregačního potrubí vracejí výsledek v radiánech. Můžete kombinovat $radiansToDegrees s takovými operátory vrátit výsledek ve stupních.
Předpokládejme, že máme kolekci nazvanou test s následujícím dokumentem:
{ "_id" :1, "data" :0,5 }
A předpokládejme, že chceme použít $asin operátor vrátí arkussinus data pole. $asin operátor vrátí výsledek v radiánech, ale předpokládejme, že místo toho chceme výsledek ve stupních.
V tomto případě můžeme provést následující:
db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, radiány:{ $asin:"$data" }, stupně:{ $radiansToDegrees :{ $asin:"$data" } } } } ])
Výsledek:
{ "radiány" :0,5235987755982988, "stupně" :29,999999999999996 }
V tomto příkladu první pole představuje výsledek v radiánech a druhé pole jej zobrazuje ve stupních.