MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB $degreesToRadians

В MongoDB, $degreesToRadians Операторът на конвейера за агрегиране преобразува входна стойност, измерена в градуси, в радиани.

$degreesToRadians приема всеки валиден израз, който се разрешава до число.

$degreesToRadians операторът беше въведен в MongoDB 4.2.

Пример

Да предположим, че имаме колекция, наречена test със следния документ:

{ "_id" :1, "data" :180 }

И нека приемем, че стойността на data полето е в градуси (следователно в този случай е 180 градуса).

Можем да използваме $degreesToRadians оператор за преобразуване на данните поле в радиани:

db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, градуси:"$data", радиани:{ $degreesToRadians:"$data" } } } ]) 

Резултат:

{ "градуси" :180, "радиани" :3,141592653589793 }

По подразбиране $degreesToRadians операторът връща стойности като double , но може също да връща стойности като 128-битова десетична стойност,  стига изразът да се разреши до 128-битова десетична стойност.

128-битови десетични стойности

Ако изразът, предоставен на $degreesToRadians е 128-битов десетичен знак, след което резултатът се връща в 128-битов десетичен знак.

Да предположим, че добавяме следния документ към нашата колекция:

{ "_id" :2, "data" :NumberDecimal("0.1301023541559787031443874490659") }

Нека стартираме $degreesToRadians оператор срещу този документ:

db.test.aggregate( [ { $match:{ _id:2 } }, { $project:{ _id:0, градуси:"$data", радиани:{ $degreesToRadians:"$data" } } } ]).pretty() 

Резултат:

{ "градуси" :NumberDecimal("90.1301023541559787031443874490659"), "radians" :NumberDecimal("1.57306704123951417589027804740")56 

Изходът е 128-битов десетичен.

Нулеви стойности

Нулевите стойности връщат null когато използвате $degreesToRadians оператор.

Да предположим, че добавяме следния документ към нашата колекция:

{ "_id" :3, "data" :null }

Нека стартираме $degreesToRadians оператор срещу този документ:

db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, радиани:{ $degreesToRadians:"$data" } } } ]) 

Резултат:

{ "radians" :null }

Можем да видим, че резултатът е null .

NaN стойности

Ако аргументът се разреши до NaN$degreesToRadians връща NaN .

Пример:

db.test.aggregate( [ { $match:{ _id:3 } }, { $project:{ _id:0, радиани:{ $degreesToRadians:0 * "$data" } } } ])  

Резултат:

{ "радиани" :NaN }

Безкрайност

Ако аргументът се разреши до Безкрайност или -Infinity , $degreesToRadians операторът връща Infinity .

Да предположим, че добавяме следния документ към нашата колекция:

{ "_id" :4, "data" :Безкрайност }

Нека изпълним $degreesToRadians срещу полето за данни:

db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, радиани:{ $degreesToRadians:"$data" } } } ]) 

Резултат:

{ "radians" :Безкрайност }

Несъществуващи полета

Ако $degreesToRadians операторът се прилага срещу поле, което не съществува, null се връща.

Пример:

db.test.aggregate( [ { $match:{ _id:4 } }, { $project:{ _id:0, радиани:{ $degreesToRadians:"$name" } } } ]) 

Резултат:

{ "radians" :null }

Комбинирано с други оператори

Някои оператори на тръбопроводи за агрегиране приемат изразите си в радиани. Ако полето има стойност в градуси, можете да комбинирате $degreesToRadians за да преобразувате израза в радиани.

Да предположим, че имаме колекция, наречена test със следния документ:

{ "_id" :1, "data" :3 }

И в този случай стойността на полето с данни е в градуси.

Да предположим, че искаме да използваме $cosh оператор за връщане на хиперболичния косинус на данните поле. Единственият проблем е, че $cosh операторът приема изрази в радиани.

Няма проблем! Можем да използваме $degreesToRadians за да преобразувате входния израз в радиани.

Пример:

db.test.aggregate( [ { $match:{ _id:1 } }, { $project:{ _id:0, hyperbolicCosine:{ $degreesToRadians:{ $cosh:"$data" } } } } ]) 

Резултат:

{ "hyperbolicCosine" :0,17571384980422547 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Допълнителни свойства за валидиране на MongoDB jsonSchema

  2. Поставете Pandas Dataframe в mongodb с помощта на PyMongo

  3. 3 начина за връщане на произволна извадка от документи от колекция MongoDB

  4. вземете mongodb _id обект след upsert с php

  5. Mongo групово намиране и актуализиране на полето за съответстващи документи в една заявка?