MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB $degreesToRadians

W MongoDB $degreesToRadians Operator potoku agregacji konwertuje wartość wejściową mierzoną w stopniach na radiany.

$degreesToRadians akceptuje każde prawidłowe wyrażenie, które prowadzi do liczby.

$degreesToRadians operator został wprowadzony w MongoDB 4.2.

Przykład

Załóżmy, że mamy kolekcję o nazwie test z następującym dokumentem:

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

I załóżmy, że wartość data pole jest w stopniach (dlatego w tym przypadku jest to 180 stopni).

Możemy użyć $degreesToRadians operator do konwersji data pole do radianów:

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

Wynik:

{ "degrees" : 180, "radians" : 3.141592653589793 }

Domyślnie $degreesToRadians operator zwraca wartości jako double , ale może również zwracać wartości jako 128-bitowe wartości dziesiętne, o ile wyrażenie daje wynik 128-bitowej wartości dziesiętnej.

128-bitowe wartości dziesiętne

Jeśli wyrażenie dostarczone do $degreesToRadians jest 128-bitowy dziesiętny, to wynik jest zwracany w 128-bitowym dziesiętnym.

Załóżmy, że do naszej kolekcji dodamy następujący dokument:

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

Uruchommy $degreesToRadians operatora względem tego dokumentu:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        degrees: "$data",
        radians: { $degreesToRadians: "$data" }
      }
    }
  ]
).pretty()

Wynik:

{
	"degrees" : NumberDecimal("90.1301023541559787031443874490659"),
	"radians" : NumberDecimal("1.573067041239514175890278047405623")
}

Dane wyjściowe są 128-bitowe po przecinku.

Wartości puste

Wartości null zwracają null podczas korzystania z $degreesToRadians operatora.

Załóżmy, że do naszej kolekcji dodamy następujący dokument:

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

Uruchommy $degreesToRadians operatora względem tego dokumentu:

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

Wynik:

{ "radians" : null }

Widzimy, że wynikiem jest null .

Wartości NaN

Jeśli argument ma postać NaN$degreesToRadians zwraca NaN .

Przykład:

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

Wynik:

{ "radians" : NaN }

Nieskończoność

Jeśli argument kończy się na Infinity lub -Infinity , $degreesToRadians operator zwraca Infinity .

Załóżmy, że do naszej kolekcji dodamy następujący dokument:

{ "_id" : 4, "data" : Infinity }

Uruchommy $degreesToRadians względem pola danych:

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

Wynik:

{ "radians" : Infinity }

Nieistniejące pola

Jeśli $degreesToRadians operator jest stosowany do pola, które nie istnieje, null jest zwracany.

Przykład:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        radians: { $degreesToRadians: "$name" }
      }
    }
  ]
)

Wynik:

{ "radians" : null }

W połączeniu z innymi operatorami

Niektóre operatory potoku agregacji akceptują swoje wyrażenia w radianach. Jeśli pole ma wartość w stopniach, możesz połączyć $degreesToRadians aby przekonwertować wyrażenie na radiany.

Załóżmy, że mamy kolekcję o nazwie test z następującym dokumentem:

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

W tym przypadku wartość pola danych jest wyrażona w stopniach.

Załóżmy teraz, że chcemy użyć $cosh operator zwracający cosinus hiperboliczny data pole. Jedynym problemem jest to, że $cosh operator akceptuje wyrażenia w radianach.

Nie ma problemu! Możemy użyć $degreesToRadians aby przekonwertować wyrażenie wejściowe na radiany.

Przykład:

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

Wynik:

{ "hyperbolicCosine" : 0.17571384980422547 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak używać MongoDB z obietnicami w Node.js?

  2. mangusta :znajdź dane, zapętlając tablicę modeli

  3. Przewodnik MongoDB BSON

  4. Nie udało się uruchomić mongod.service:Nie znaleziono jednostki mongod.service

  5. MongoDB $sinh