sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $exp

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.


  1. MongoDB på Azure:Hvordan vælger man den rigtige instanstype?

  2. Mongodb undgå duplikerede poster

  3. MongoDB $or Aggregation Pipeline Operator

  4. Logning af MongoDB-forespørgsler med Spring Boot