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

MongoDB $radiansToDegrees

Dans MongoDB, le $radiansToDegrees l'opérateur de pipeline d'agrégation convertit une valeur d'entrée mesurée en radians en degrés.

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

Le $radiansToDegrees 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" : 0.5 }

Et supposons que la valeur de data le champ est en radians (c'est-à-dire 0.5 radians).

Nous pouvons utiliser le $radiansToDegrees opérateur pour convertir les data champ en degrés :

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

Résultat :

{ "radians" : 0.5, "degrees" : 28.64788975654116 }

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

Valeurs décimales 128 bits

Si l'expression fournie à $radiansToDegrees 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("0.1301023541559787031443874490659") }

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

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

Résultat :

{
	"radians" : NumberDecimal("0.1301023541559787031443874490659"),
	"degrees" : NumberDecimal("7.454315797853905125952127312900524")
}

La sortie est décimale 128 bits.

Valeurs nulles

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

Supposons que nous ajoutions le document suivant à notre collection :

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

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

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

Résultat :

{ "degrees" : null }

Nous pouvons voir que le résultat est null .

Valeurs NaN

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

Exemple :

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

Résultat :

{ "degrees" : NaN }

Infini

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

Supposons que nous ajoutions le document suivant à notre collection :

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

Exécutons $radiansToDegrees contre le champ de données :

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

Résultat :

{ "degrees" : Infinity }

Champs inexistants

Si le $radiansToDegrees 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,
        degrees: { $radiansToDegrees: "$name" }
      }
    }
  ]
)

Résultat :

{ "degrees" : null }

Combiné avec d'autres opérateurs

Certains opérateurs de pipeline d'agrégation renvoient leur résultat en radians. Vous pouvez combiner $radiansToDegrees avec de tels opérateurs pour renvoyer le résultat en degrés.

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

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

Et supposons que nous voulions utiliser le $asin opérateur pour retourner l'arcsinus de la data domaine. Le $asin renvoie son résultat en radians, mais supposons que nous voulions plutôt le résultat en degrés.

Dans ce cas, nous pouvons procéder comme suit :

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

Résultat :

{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }

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