sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $exp

V MongoDB, $exp operátor agregačního kanálu zvýší Eulerovo číslo (tj. e ) na zadaný exponent a vrátí výsledek.

Exponent může být jakýkoli platný výraz, který se překládá na číslo.

Eulerovo číslo je matematická konstanta přibližně rovna 2,7182818284590452353602874713527. Toto číslo je pouze přibližné, protože Eulerovo číslo je iracionální a jeho číslice pokračují navždy bez opakování. Eulerovo číslo je základem přirozeného logaritmu.

Příklad

Předpokládejme, že máme kolekci nazvanou test s následujícími dokumenty

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

Zde je příklad použití $exp operátora na data pole:

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

Výsledek:

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

Nulové hodnoty

Pokud je výraz vyřešen na null a poté null je vráceno.

Předpokládejme, že naše sbírka obsahuje následující dokument:

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

Nyní použijeme $exp k tomuto dokumentu:

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

Výsledek:

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

Nekonečno

Předpokládejme, že máme ve sbírce následující dokumenty:

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

Zde je to, co se stane, když použijeme $exp do Infinity a -Infinity :

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

Výsledek:

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

Chybějící pole

Použití $exp do chybějícího pole vrátí null .

Příklad:

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

Výsledek:

{ "_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 }

V tomto příkladu použijeme $exp operátor na neexistující pole s názvem age . Výsledek je null ve všech případech.


  1. ScaleGrid oznamuje sdílený hosting MongoDB na Amazon AWS

  2. najít ID nejnovějšího dílčího dokumentu vloženého do mongoose

  3. MongoDB:Aktualizace vnořeného dokumentu

  4. spring-data-mongo - volitelné parametry dotazu?