sql >> Database >  >> NoSQL >> MongoDB

MongoDB $letterlijk

In MongoDB, de $literal aggregatiepijplijnoperator retourneert een waarde zonder te ontleden.

Het accepteert elke geldige uitdrukking en retourneert de niet-geparseerde uitdrukking.

De $literal operator kan handig zijn als je een waarde hebt die MongoDB per ongeluk kan interpreteren als een uitdrukking, maar je wilt dat niet.

Als u bijvoorbeeld een geldbedrag heeft dat een dollarteken bevat, kan MongoDB dat per ongeluk interpreteren als een veldnaam. U kunt $literal . gebruiken om te voorkomen dat MongoDB dergelijke uitdrukkingen interpreteert.

Voorbeeld

Stel dat we een verzameling hebben met de naam test met het volgende document:

{ "_id" : 1, "name" : "Homer" }

Hier is een voorbeeld van het toepassen van $literal :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 1 ] } } },
    {
      $project:
        { 
          _id: 0,
          interpreted: "$name",
          literal: { $literal: "$name" }
        }
    }
  ]
)

Resultaat:

{ "interpreted" : "Homer", "literal" : "$name" }

In dit voorbeeld retourneren we de waarde van de name veld met behulp van $name ernaar te verwijzen.

We retourneren ook de letterlijke waarde $name , zonder dat MongoDB het interpreteert als de name veld:

Voorbeeld 2

Stel dat onze collectie het volgende document bevat:

{ "_id" : 2, "a" : 10, "b" : 5 }

Hier is nog een voorbeeld van het gebruik van $literal :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 2 ] } } },
    {
      $project:
        { 
          _id: 0,
          interpreted: { $multiply: [ "$a", "$b" ] },
          literal: { $literal: { $multiply: [ "$a", "$b" ] } }
        }
    }
  ]
)

Resultaat:

{ "interpreted" : 50, "literal" : { "$multiply" : [ "$a", "$b" ] } }

In dit geval bevat het eerste geretourneerde veld het resultaat van de $multiply operator tegen de a en b velden.

Het tweede veld geeft gewoon de letterlijke waarde weer die we hebben gegeven aan de $literal telefoniste.


  1. $redis globale variabele met robijn op rails

  2. Node mangoest zoekquery in lus werkt niet

  3. Percona Live Frankfurt 2018 - Evenementoverzicht en onze sessies

  4. Best practices voor het uitvoeren van MongoDB in een cluster