sql >> Database >  >> NoSQL >> MongoDB

MongoDB $exp

In MongoDB is de $exp aggregatiepijplijnbeheerder verhoogt het getal van Euler (d.w.z. e ) naar de opgegeven exponent en retourneert het resultaat.

De exponent kan elke geldige uitdrukking zijn die oplost in een getal.

Het getal van Euler is een wiskundige constante die ongeveer gelijk is aan 2,7182818284590452353602874713527. Dit getal is slechts bij benadering omdat het getal van Euler irrationeel is en de cijfers voor altijd doorgaan zonder te herhalen. Het getal van Euler is de basis van de natuurlijke logaritme.

Voorbeeld

Stel dat we een verzameling hebben met de naam test met de volgende documenten

{ "_id" : 1, "data" : 2 }
{ "_id" : 2, "data" : 3 }
{ "_id" : 3, "data" : -2 }
{ "_id" : 4, "data" : -3 }
{ "_id" : 5, "data" : 0 }

Hier is een voorbeeld van het toepassen van de $exp operator naar de data veld:

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 1, 2, 3, 4, 5 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $exp: "$data" }
          }
     }
   ]
)

Resultaat:

{ "data" : 2, "result" : 7.38905609893065 }
{ "data" : 3, "result" : 20.085536923187668 }
{ "data" : -2, "result" : 0.1353352832366127 }
{ "data" : -3, "result" : 0.049787068367863944 }
{ "data" : 0, "result" : 1 }

Null-waarden

Als de uitdrukking wordt omgezet in null , dan null wordt geretourneerd.

Stel dat onze collectie het volgende document bevat:

{ "_id" : 6, "data" : null }

Laten we nu $exp toepassen naar dat document:

db.test.aggregate(
   [
     { $match: { _id: 6 } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $exp: "$data" }
          }
     }
   ]
)

Resultaat:

{ "data" : null, "result" : null }

Oneindig

Stel dat we de volgende documenten in onze collectie hebben:

{ "_id" : 7, "data" : Infinity }
{ "_id" : 8, "data" : -Infinity }

Dit is wat er gebeurt als we $exp toepassen tot Infinity en -Infinity :

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 7, 8 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $exp: "$data" }
          }
     }
   ]
)

Resultaat:

{ "data" : Infinity, "result" : Infinity }
{ "data" : -Infinity, "result" : 0 }

Ontbrekende velden

$exp toepassen naar een ontbrekend veld retourneert null .

Voorbeeld:

db.test.aggregate(
   [
     {
       $project:
          {
            result: { $exp: "$age" }
          }
     }
   ]
)

Resultaat:

{ "_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 dit voorbeeld passen we de $exp . toe operator naar een niet-bestaand veld met de naam age . Het resultaat is null in alle gevallen.


  1. Hoe herken ik een Redis-geheugenlek?

  2. De som van de kolom nemen in MongoDB

  3. document retourneren met het laatste subdocument alleen in mongodb-aggregaat

  4. Rails, Sidekiq - Redis NOAUTH