sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $exp

I MongoDB, $exp aggregeringspipeline-operatören höjer Eulers nummer (dvs e ) till den angivna exponenten och returnerar resultatet.

Exponenten kan vara vilket giltigt uttryck som helst som löser sig till ett tal.

Eulers tal är en matematisk konstant ungefär lika med 2,7182818284590452353602874713527. Detta nummer är bara ungefärligt eftersom Eulers nummer är irrationellt och dess siffror fortsätter för evigt utan att upprepas. Eulers tal är basen för den naturliga logaritmen.

Exempel

Anta att vi har en samling som heter test med följande dokument

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

Här är ett exempel på hur du använder $exp operatör till data fält:

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 }

Nullvärden

Om uttrycket löser sig till null , sedan null returneras.

Anta att vår samling innehåller följande dokument:

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

Låt oss nu tillämpa $exp till det dokumentet:

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

Resultat:

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

Oändlighet

Anta att vi har följande dokument i vår samling:

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

Det här är vad som händer när vi tillämpar $exp till Infinity och -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 }

Fält saknas

Använder $exp till ett saknat fält returnerar null .

Exempel:

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 det här exemplet tillämpar vi $exp operatör till ett obefintligt fält som heter age . Resultatet är null i alla fall.


  1. Mongo-aggregation med sidnumrerade data och totaler

  2. MongoDB $pull

  3. Hur enhetstestar man en metod som ansluter till mongo, utan att faktiskt ansluta till mongo?

  4. Uppdaterar Service Stack Redis List