Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$literal (operador de expresión)

$literal

Devuelve un valor sin analizarlo. Usar para valores que el pipeline de agregación pueda interpretar como una expresión.

La $literal La expresión tiene la siguiente sintaxis:

{ $literal: <value> }

Si el <value> es un expresión, $literal no evalúa la expresión sino que devuelve la expresión sin analizar.

Ejemplo
Resultado

{ $literal: { $add: [ 2, 3 ] } }

{ "$add" : [ 2, 3 ] }

{ $literal: { $literal: 1 } }

{ "$literal" : 1 }

En expresión, el signo de dólar $ evalúa una ruta de campo; es decir, proporciona acceso al campo. Por ejemplo, la expresión $eq $eq: [ "$price", "$1" ] realiza una comprobación de igualdad entre el valor del campo llamado price y el valor del campo llamado 1 en el documento.

El siguiente ejemplo utiliza una expresión $literal para tratar un string que contiene un signo de dólar "$1" como un valor constante.

Una colección storeInventory tiene los siguientes 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 operación proyecta un campo llamado costsOneDollar que contiene un valor booleano, indicando si el valor del campo price es igual a la string "$1":

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

La etapa de $project utiliza la expresión <field>: 1 para incluir el <field> en el resultado. El siguiente ejemplo utiliza el $literal para devolver un nuevo campo configurado con el valor de 1.

Una colección books tiene los siguientes documentos:

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

La expresión { $literal: 1 } devuelve un nuevo campo editionNumber con el valor 1:

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

La operación da como resultado los siguientes documentos:

{ "_id" : 1, "title" : "Dracula", "editionNumber" : 1 }
{ "_id" : 2, "title" : "The Little Prince", "editionNumber" : 1 }

Volver

$linearFill

En esta página