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

MongoDB $exp

Dans MongoDB, le $exp l'opérateur de pipeline d'agrégation augmente le nombre d'Euler (c'est-à-dire e ) à l'exposant spécifié et renvoie le résultat.

L'exposant peut être n'importe quelle expression valide qui se résout en un nombre.

Le nombre d'Euler est une constante mathématique approximativement égale à 2,7182818284590452353602874713527. Ce nombre n'est qu'approximatif car le nombre d'Euler est irrationnel et ses chiffres continuent indéfiniment sans se répéter. Le nombre d'Euler est la base du logarithme naturel.

Exemple

Supposons que nous ayons une collection appelée test avec les documents suivants

{ "_id" : 1, "data" : 2 }
{ "_id" : 2, "data" : 3 }
{ "_id" : 3, "data" : -2 }
{ "_id" : 4, "data" : -3 }
{ "_id" : 5, "data" : 0 }

Voici un exemple d'application du $exp opérateur aux data champ :

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 1, 2, 3, 4, 5 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $exp: "$data" }
          }
     }
   ]
)

Résultat :

{ "data" : 2, "result" : 7.38905609893065 }
{ "data" : 3, "result" : 20.085536923187668 }
{ "data" : -2, "result" : 0.1353352832366127 }
{ "data" : -3, "result" : 0.049787068367863944 }
{ "data" : 0, "result" : 1 }

Valeurs nulles

Si l'expression se résout en null , puis null est renvoyé.

Supposons que notre collection contienne le document suivant :

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

Maintenant, appliquons $exp à ce document :

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

Résultat :

{ "data" : null, "result" : null }

Infini

Supposons que nous ayons les documents suivants dans notre collection :

{ "_id" : 7, "data" : Infinity }
{ "_id" : 8, "data" : -Infinity }

Voici ce qui se passe lorsque nous appliquons $exp à Infinity et -Infinity :

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 7, 8 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $exp: "$data" }
          }
     }
   ]
)

Résultat :

{ "data" : Infinity, "result" : Infinity }
{ "data" : -Infinity, "result" : 0 }

Champs manquants

Appliquer $exp à un champ manquant renvoie null .

Exemple :

db.test.aggregate(
   [
     {
       $project:
          {
            result: { $exp: "$age" }
          }
     }
   ]
)

Résultat :

{ "_id" : 1, "result" : null }
{ "_id" : 2, "result" : null }
{ "_id" : 3, "result" : null }
{ "_id" : 4, "result" : null }
{ "_id" : 5, "result" : null }
{ "_id" : 6, "result" : null }
{ "_id" : 7, "result" : null }
{ "_id" : 8, "result" : null }

Dans cet exemple, nous appliquons le $exp opérateur à un champ inexistant appelé age . Le résultat est null dans tous les cas.