I MongoDB er $exp
aggregeringspipeline-operatør hæver Eulers nummer (dvs. e ) til den angivne eksponent og returnerer resultatet.
Eksponenten kan være et hvilket som helst gyldigt udtryk, der løses til et tal.
Eulers tal er en matematisk konstant omtrent lig med 2,7182818284590452353602874713527. Dette tal er kun omtrentligt, fordi Eulers tal er irrationelt, og dets cifre fortsætter for evigt uden at gentages. Eulers tal er basis for den naturlige logaritme.
Eksempel
Antag, at vi har en samling kaldet test
med følgende dokumenter
{ "_id" : 1, "data" : 2 } { "_id" : 2, "data" : 3 } { "_id" : 3, "data" : -2 } { "_id" : 4, "data" : -3 } { "_id" : 5, "data" : 0 }
Her er et eksempel på anvendelse af $exp
operatør til data
felt:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3, 4, 5 ] } } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Resultat:
{ "data" : 2, "result" : 7.38905609893065 } { "data" : 3, "result" : 20.085536923187668 } { "data" : -2, "result" : 0.1353352832366127 } { "data" : -3, "result" : 0.049787068367863944 } { "data" : 0, "result" : 1 }
Nul-værdier
Hvis udtrykket løses til null
, derefter null
er returneret.
Antag, at vores samling indeholder følgende dokument:
{ "_id" : 6, "data" : null }
Lad os nu anvende $exp
til det dokument:
db.test.aggregate(
[
{ $match: { _id: 6 } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Resultat:
{ "data" : null, "result" : null }
Uendelig
Antag, at vi har følgende dokumenter i vores samling:
{ "_id" : 7, "data" : Infinity } { "_id" : 8, "data" : -Infinity }
Her er, hvad der sker, når vi anvender $exp
til Infinity
og -Infinity
:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 7, 8 ] } } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Resultat:
{ "data" : Infinity, "result" : Infinity } { "data" : -Infinity, "result" : 0 }
Manglende felter
Anvender $exp
til et manglende felt returnerer null
.
Eksempel:
db.test.aggregate(
[
{
$project:
{
result: { $exp: "$age" }
}
}
]
)
Resultat:
{ "_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 }
I dette eksempel anvender vi $exp
operator til et ikke-eksisterende felt kaldet age
. Resultatet er null
i alle tilfælde.