sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $cosh

En MongoDB, el $cosh El operador de tubería de agregación devuelve el coseno hiperbólico de un valor que se mide en radianes.

$cosh acepta cualquier expresión válida que se resuelva en un número.

El $cosh El operador se introdujo en MongoDB 4.2.

Ejemplo

Supongamos que tenemos una colección llamada test con el siguiente documento:

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

Podemos usar el $cosh operador para devolver el coseno de los data campo:

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

Resultado:

{ "hyperbolicCosine" : 10.067661995777765 }

Por defecto, el $cosh operador devuelve valores como un double , pero también puede devolver valores como un decimal de 128 bits siempre que la expresión se resuelva en un valor decimal de 128 bits.

Cuando la Expresión está en Grados

Como se mencionó, $cosh acepta su expresión en radianes. Puede usar el $degreesToRadians operador para convertir cualquier valor de grados a radianes.

Ejemplo:

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

Resultado:

{ "hyperbolicCosine" : 0.17571384980422547 }

Valores nulos

Los valores nulos devuelven null cuando se usa el $cosh operador.

Supongamos que agregamos el siguiente documento a nuestra colección:

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

Ejecutemos el $cosh operador contra ese documento:

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

Resultado:

{ "hyperbolicCosine" : null }

Podemos ver que el resultado es null .

Valores NaN

Si el argumento se resuelve en NaN , $cosh devuelve NaN .

Ejemplo:

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

Resultado:

{ "hyperbolicCosine" : NaN }

En este caso, intenté multiplicar un número por una cadena, lo que resultó en NaN siendo devuelto.

Infinito

Si el argumento se resuelve en Infinity o -Infinity , el $cosh el operador devuelve Infinity .

Supongamos que agregamos el siguiente documento a nuestra colección:

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

Ejecutemos $cosh contra el campo de datos:

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

Resultado:

{ "hyperbolicCosine" : Infinity }

Campos Inexistentes

Si el $cosh el operador se aplica a un campo que no existe, null es devuelto.

Ejemplo:

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

Resultado:

{ "hyperbolicCosine" : null }

Decimal de 128 bits

Como se mencionó, si la expresión proporcionada a $cosh es decimal de 128 bits, entonces el resultado se devuelve en decimal de 128 bits.

Supongamos que agregamos el siguiente documento a la colección:

{ "_id" : 5, "data" : NumberDecimal("1.1301023541559787031443874490659") }

Esto es lo que sucede cuando lo ejecutamos a través de $cosh operador:

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

Resultado:

{ "hyperbolicCosine" : NumberDecimal("1.709486781983575502518713909095045") }

La salida es decimal de 128 bits.