I MongoDB er $literal aggregeringspipeline-operator returnerer en værdi uden parsing.
Det accepterer ethvert gyldigt udtryk og returnerer det uparserede udtryk.
$literal operator kan være nyttig, når du har en værdi, som MongoDB utilsigtet kunne fortolke som et udtryk, men du ikke vil have det.
For eksempel, hvis du har et pengebeløb, der inkluderer et dollartegn, kan MongoDB utilsigtet fortolke det som et feltnavn. Du kan bruge $literal for at forhindre MongoDB i at fortolke sådanne udtryk.
Eksempel
Antag, at vi har en samling kaldet test med følgende dokument:
{ "_id" : 1, "name" : "Homer" }
Her er et eksempel på anvendelse af $literal :
db.test.aggregate(
[
{ $match: { _id: { $in: [ 1 ] } } },
{
$project:
{
_id: 0,
interpreted: "$name",
literal: { $literal: "$name" }
}
}
]
) Resultat:
{ "interpreted" : "Homer", "literal" : "$name" }
I dette eksempel returnerer vi værdien af name felt ved at bruge $name at henvise til det.
Vi returnerer også den bogstavelige værdi $name , uden at MongoDB fortolker det til at betyde name felt:
Eksempel 2
Antag, at vores samling indeholder følgende dokument:
{ "_id" : 2, "a" : 10, "b" : 5 }
Her er endnu et eksempel på brug af $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 dette tilfælde indeholder det første returnerede felt resultatet af $multiply operator mod a og b felter.
Det andet felt udsender simpelthen den bogstavelige værdi, som vi har givet til $literal operatør.