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

MongoDB $sinh

W MongoDB $sinh Operator potoku agregacji zwraca sinus hiperboliczny wartości mierzonej w radianach.

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

$sinh 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" : 2 }

Możemy użyć $sinh operator zwracający sinus hiperboliczny data pole:

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

Wynik:

{ "hyperbolicSine" : 3.6268604078470186 }

Konwertuj na radiany

Jak wspomniano, $sinh zwraca sinus wartości mierzonej w radianach. Jeśli wartość jest w stopniach, możesz użyć $degreesToRadians operatora, aby przekonwertować go na radiany.

Przykład:

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

Wynik:

{ "hyperbolicSine" : 0.06330065562715485 }

128-bitowe wartości dziesiętne

Domyślnie $sinh 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.

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

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

Uruchommy $sinh operatora względem tego dokumentu:

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

Wynik:

{ "result" : NumberDecimal("4.148451510563232456419254731162938") }

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

Wartości puste

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

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

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

Uruchommy $sinh operatora względem tego dokumentu:

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

Wynik:

{ "result" : null }

Widzimy, że wynikiem jest null .

Wartości NaN

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

Przykład:

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

Wynik:

{ "result" : NaN }

Nieistniejące pola

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

Przykład:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $sinh: "$name" }
      }
    }
  ]
)

Wynik:

{ "result" : null }

Nieskończoność

Zapewnienie Infinity zwraca Infinity i dostarczając -Infinity zwraca -Infinity .

Załóżmy, że dodajemy do kolekcji następujące dokumenty:

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

Zastosujmy $sinh do tych dokumentów:

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 4, 5 ] } } },
    { $project: { 
        hyperbolicSine: { $sinh: "$data" }
      }
    }
  ]
)

Wynik:

{ "_id" : 4, "hyperbolicSine" : Infinity }
{ "_id" : 5, "hyperbolicSine" : -Infinity }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wysokowydajne klastry MongoDB na Amazon EC2

  2. MongoDB Find wydajność:pojedynczy indeks złożony VS dwa indeksy pojedynczego pola

  3. MongoDB nie może uruchomić serwera:domyślny silnik pamięci masowej „wiredTiger” nie jest dostępny w tej wersji mongod

  4. php agregacji mongodb

  5. Jak agregować według daty, gdy w ramach agregacji podany jest pełny znacznik czasu?