In MongoDB der $exp
Aggregations-Pipeline-Operator erhöht die Euler-Zahl (d. h. e ) zum angegebenen Exponenten und gibt das Ergebnis zurück.
Der Exponent kann ein beliebiger gültiger Ausdruck sein, der sich in eine Zahl auflösen lässt.
Die Eulersche Zahl ist eine mathematische Konstante, die ungefähr 2,7182818284590452353602874713527 entspricht. Diese Zahl ist nur ungefähr, weil die Eulersche Zahl irrational ist und ihre Ziffern endlos weitergehen, ohne sich zu wiederholen. Die Eulersche Zahl ist die Basis des natürlichen Logarithmus.
Beispiel
Angenommen, wir haben eine Sammlung namens test
mit den folgenden Dokumenten
{ "_id" : 1, "data" : 2 } { "_id" : 2, "data" : 3 } { "_id" : 3, "data" : -2 } { "_id" : 4, "data" : -3 } { "_id" : 5, "data" : 0 }
Hier ist ein Beispiel für die Anwendung von $exp
Operator zu den data
Feld:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3, 4, 5 ] } } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Ergebnis:
{ "data" : 2, "result" : 7.38905609893065 } { "data" : 3, "result" : 20.085536923187668 } { "data" : -2, "result" : 0.1353352832366127 } { "data" : -3, "result" : 0.049787068367863944 } { "data" : 0, "result" : 1 }
Nullwerte
Wenn der Ausdruck zu null
aufgelöst wird , dann null
zurückgegeben wird.
Angenommen, unsere Sammlung enthält das folgende Dokument:
{ "_id" : 6, "data" : null }
Wenden wir nun $exp
an zu diesem Dokument:
db.test.aggregate(
[
{ $match: { _id: 6 } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Ergebnis:
{ "data" : null, "result" : null }
Unendlich
Angenommen, wir haben die folgenden Dokumente in unserer Sammlung:
{ "_id" : 7, "data" : Infinity } { "_id" : 8, "data" : -Infinity }
Folgendes passiert, wenn wir $exp
anwenden bis Infinity
und -Infinity
:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 7, 8 ] } } },
{
$project:
{
_id: 0,
data: 1,
result: { $exp: "$data" }
}
}
]
)
Ergebnis:
{ "data" : Infinity, "result" : Infinity } { "data" : -Infinity, "result" : 0 }
Fehlende Felder
Anwenden von $exp
zu einem fehlenden Feld gibt null
zurück .
Beispiel:
db.test.aggregate(
[
{
$project:
{
result: { $exp: "$age" }
}
}
]
)
Ergebnis:
{ "_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 }
In diesem Beispiel wenden wir den $exp
an Operator zu einem nicht existierenden Feld namens age
. Das Ergebnis ist null
in allen Fällen.