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

MongoDB $atan

Dans MongoDB, le $atan l'opérateur de pipeline d'agrégation renvoie l'arctangente (tangente inverse) d'une valeur.

La valeur de retour est en radians.

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

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

Nous pouvons utiliser le $atan opérateur pour retourner l'arc tangente de la data champ :

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

Résultat :

{ "arctangent" : 1.1071487177940906 }

Convertir en degrés

Comme mentionné, $atan 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: { $atan: "$data" },
        degrees: { $radiansToDegrees: { $atan: "$data" } }
      }
    }
  ]
)

Résultat :

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

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

Par défaut, le $atan 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.

Supposons que nous ajoutions le document suivant à notre collection :

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

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

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

Résultat :

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

La sortie est décimale 128 bits.

Valeurs nulles

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

Supposons que nous ajoutions le document suivant à notre collection :

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

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

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

Résultat :

{ "result" : null }

Nous pouvons voir que le résultat est null .

Valeurs NaN

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

Exemple :

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

Résultat :

{ "result" : NaN }

Champs inexistants

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

Exemple :

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

Résultat :

{ "result" : null }