MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $asinh

Dans MongoDB, le $asinh L'opérateur de pipeline d'agrégation renvoie l'arcsinus hyperbolique (sinus hyperbolique inverse) d'une valeur, mesurée en radians.

$asinh accepte toute expression valide qui se résout en un nombre.

Le $asinh L'opérateur a été introduit dans MongoDB 4.2.

Exemple

Supposons que nous ayons une collection appelée test avec le document suivant :

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

Nous pouvons utiliser le $asinh opérateur pour renvoyer l'arcsinus hyperbolique de la data champ :

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

Résultat :

{ "hyperbolicArcsine" : 5.886111747410234 }

Par défaut, le $asinh l'opérateur renvoie les valeurs sous la forme d'un double , mais il peut également renvoyer des valeurs sous forme décimale de 128 bits tant que l'expression se résout en une valeur décimale de 128 bits.

Convertir en degrés

Comme mentionné, $asinh renvoie son résultat en radians. Vous pouvez utiliser le $radiansToDegrees opérateur si vous voulez le résultat en degrés.

Exemple :

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

Résultat :

{ "radians" : 5.886111747410234, "degrees" : 337.2493608689805 }

Dans cet exemple, le premier champ présente le résultat en radians et le second le présente en degrés.

Valeurs décimales 128 bits

Si l'expression fournie à $asinh est décimal 128 bits, le résultat est renvoyé en décimal 128 bits.

Supposons que nous ajoutions le document suivant à notre collection :

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

Exécutons le $asinh opérateur sur ce document :

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

Résultat :

{ "hyperbolicArcsine" : NumberDecimal("5.194432162492309602580058740782701") }

La sortie est décimale 128 bits.

Valeurs nulles

Les valeurs nulles renvoient null lors de l'utilisation du $asinh opérateur.

Supposons que nous ajoutions le document suivant à notre collection :

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

Exécutons le $asinh opérateur sur ce document :

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

Résultat :

{ "result" : null }

Nous pouvons voir que le résultat est null .

Valeurs NaN

Si l'argument se résout en NaN , $asinh renvoie NaN .

Exemple :

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

Résultat :

{ "result" : NaN }

Infini

Si l'argument se résout en Infinity ou -Infinity , le $asinh l'opérateur renvoie Infinity .

Supposons que nous ajoutions le document suivant à notre collection :

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

Lançons $asinh contre le champ de données :

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

Résultat :

{ "hyperbolicArcsine" : Infinity }

Champs inexistants

Si le $asinh l'opérateur est appliqué sur un champ qui n'existe pas, null est renvoyé.

Exemple :

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

Résultat :

{ "result" : null }