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.