Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

$literal (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplos
$literal

Retorna um valor sem analisar. Use para valores que o aggregation pipeline pode interpretar como uma expressão.

A expressão $literal tem a seguinte sintaxe:

{ $literal: <value> }

Se <value> for uma expressão $literal não avalia a expressão, mas gera a expressão não analisada.

Exemplo
Resultado
{ $literal: { $add: [ 2, 3 ] } }
{ "$add" : [ 2, 3 ] }
{ $literal: { $literal: 1 } }
{ "$literal" : 1 }

Na expressão, o cifrão $ é avaliado como um caminho de campo; ou seja, fornece acesso ao campo. Por exemplo, a expressão $eq $eq: [ "$price", "$1" ] executa uma verificação de igualdade entre o valor no campo denominado price e o valor no campo denominado 1 no documento.

O exemplo a seguir usa uma expressão $literal para tratar uma string que contém um cifrão "$1" como um valor constante.

Uma coleção storeInventory tem os seguintes documentos:

db.storeInventory.insertMany( [
{ "_id" : 1, "item" : "napkins", price: "$2.50" },
{ "_id" : 2, "item" : "coffee", price: "1" },
{ "_id" : 3, "item" : "soap", price: "$1" }
] )
db.storeInventory.aggregate( [
{ $project: { costsOneDollar: { $eq: [ "$price", { $literal: "$1" } ] } } }
] )

Esta operação projeta um campo denominado costsOneDollar que detém um valor booleano, indicando se o valor do campo price é igual à string "$1":

{ "_id" : 1, "costsOneDollar" : false }
{ "_id" : 2, "costsOneDollar" : false }
{ "_id" : 3, "costsOneDollar" : true }

O estágio $project utiliza a expressão <field>: 1 para incluir o <field> na saída. O exemplo seguinte utiliza o $literal para retornar um novo campo configurado para o valor de 1.

Uma coleção books tem os seguintes documentos:

db.books.insertMany([
{ "_id" : 1, "title" : "Dracula", "condition": "new" },
{ "_id" : 2, "title" : "The Little Prince", "condition": "new" }
])

A expressão { $literal: 1 } retorna um novo campo editionNumber configurado para o valor 1:

db.books.aggregate( [
{ $project: { "title": 1, "editionNumber": { $literal: 1 } } }
] )

A operação resulta nos seguintes documentos:

{ "_id" : 1, "title" : "Dracula", "editionNumber" : 1 }
{ "_id" : 2, "title" : "The Little Prince", "editionNumber" : 1 }
← $let (agregação)