MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $exp

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.