V MongoDB, $exp
operátor agregačního kanálu zvýší Eulerovo číslo (tj. e ) na zadaný exponent a vrátí výsledek.
Exponent může být jakýkoli platný výraz, který se překládá na číslo.
Eulerovo číslo je matematická konstanta přibližně rovna 2,7182818284590452353602874713527. Toto číslo je pouze přibližné, protože Eulerovo číslo je iracionální a jeho číslice pokračují navždy bez opakování. Eulerovo číslo je základem přirozeného logaritmu.
Příklad
Předpokládejme, že máme kolekci nazvanou test
s následujícími dokumenty
{ "_id" : 1, "data" : 2 } { "_id" : 2, "data" : 3 } { "_id" : 3, "data" : -2 } { "_id" : 4, "data" : -3 } { "_id" : 5, "data" : 0 }
Zde je příklad použití $exp
operátora na data
pole:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3, 4, 5 ] } } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Výsledek:
{ "data" : 2, "result" : 7.38905609893065 } { "data" : 3, "result" : 20.085536923187668 } { "data" : -2, "result" : 0.1353352832366127 } { "data" : -3, "result" : 0.049787068367863944 } { "data" : 0, "result" : 1 }
Nulové hodnoty
Pokud je výraz vyřešen na null
a poté null
je vráceno.
Předpokládejme, že naše sbírka obsahuje následující dokument:
{ "_id" : 6, "data" : null }
Nyní použijeme $exp
k tomuto dokumentu:
db.test.aggregate(
[
{ $match: { _id: 6 } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Výsledek:
{ "data" : null, "result" : null }
Nekonečno
Předpokládejme, že máme ve sbírce následující dokumenty:
{ "_id" : 7, "data" : Infinity } { "_id" : 8, "data" : -Infinity }
Zde je to, co se stane, když použijeme $exp
do Infinity
a -Infinity
:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 7, 8 ] } } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Výsledek:
{ "data" : Infinity, "result" : Infinity } { "data" : -Infinity, "result" : 0 }
Chybějící pole
Použití $exp
do chybějícího pole vrátí null
.
Příklad:
db.test.aggregate(
[
{
$project:
{
result: { $exp: "$age" }
}
}
]
)
Výsledek:
{ "_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 }
V tomto příkladu použijeme $exp
operátor na neexistující pole s názvem age
. Výsledek je null
ve všech případech.