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

MongoDB $atan

В MongoDB, $atan Операторът на конвейера за агрегиране връща арктангенса (обратната допирателна) на стойност.

Връщаната стойност е в радиани.

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

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

Пример

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

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

Можем да използваме $atan оператор за връщане на арктангенса на data поле:

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

Резултат:

{ "arctangent" : 1.1071487177940906 }

Преобразуване в градуси

Както споменахме, $atan връща резултата си в радиани. Можете да използвате $radiansToDegrees оператор, ако искате резултатът в градуси.

Пример:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: { $atan: "$data" },
        degrees: { $radiansToDegrees: { $atan: "$data" } }
      }
    }
  ]
)

Резултат:

{ "radians" : 1.1071487177940906, "degrees" : 63.43494882292202 }

В този пример първото поле представя резултата в радиани, а второто поле го представя в градуси.

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

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

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

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

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

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        arctangent: { $atan: "$data" }
      }
    }
  ]
)

Резултат:

{ "arctangent" : NumberDecimal("1.131877001503761613330938729211760") }

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

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

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

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

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

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

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atan: "$data" }
      }
    }
  ]
)

Резултат:

{ "result" : null }

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

NaN стойности

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

Пример:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atan: 1 * "$data" }
      }
    }
  ]
)

Резултат:

{ "result" : NaN }

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

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

Пример:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atan: "$wrong" }
      }
    }
  ]
)

Резултат:

{ "result" : null }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Динамична връзка с база данни към mongodb или mongoose от nodejs

  2. Позоваване на друга схема в Mongoose

  3. Представяне на диаграми за търсене в MongoDB

  4. Допълнителни свойства за валидиране на MongoDB jsonSchema

  5. Как да съхранявате геопространствена информация в mongoDB