sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $literal

I MongoDB, $literal aggregeringspipeline-operatören returnerar ett värde utan att analysera.

Den accepterar alla giltiga uttryck och returnerar det oparerade uttrycket.

$literal operatorn kan vara användbar när du har ett värde som MongoDB oavsiktligt skulle kunna tolka som ett uttryck, men du inte vill att det ska göra det.

Till exempel, om du har ett monetärt belopp som inkluderar ett dollartecken, kan MongoDB oavsiktligt tolka det som ett fältnamn. Du kan använda $literal för att förhindra MongoDB från att tolka sådana uttryck.

Exempel

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

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

Här är ett exempel på hur du använder $literal :

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

Resultat:

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

I det här exemplet returnerar vi värdet för name genom att använda $name att hänvisa till det.

Vi returnerar också det bokstavliga värdet $name , utan att MongoDB tolkar det som att det betyder name fält:

Exempel 2

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

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

Här är ett annat exempel på hur du använder $literal :

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

Resultat:

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

I det här fallet innehåller det första fältet som returneras resultatet av $multiply operatorn mot a och b fält.

Det andra fältet matar helt enkelt ut det bokstavliga värdet som vi gav till $literal operatör.


  1. Meteor returnerar ogiltigt hexadecimalt strängfel vid försök att skapa ObjectID?

  2. Kan du ange en nyckel för $addToSet i Mongo?

  3. MongoDB Opensource vs MongoDB Enterprise

  4. Hur du övervakar dina databasservrar med ClusterControl CLI