sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $degreesToRadians

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ý kosinus data 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 }

  1. Výkon Redis na vícejádrovém CPU

  2. Jak agregovat rok-měsíc-den v jiném časovém pásmu

  3. Laravel ID všech relací s ovladačem Redis

  4. Mongo $ ve výkonu operátora