文档菜单
文档首页
/
MongoDB 手册
/ / /

$literal(聚合)

在本页

  • 定义
  • 行为
  • 示例
$literal

返回一个未经解析的值。用于聚合管道可能将其解释为表达式的值。

语法$literal 表达式具有以下语法

{ $literal: <value> }

如果 <value> 是一个表达式$literal 不会评估该表达式,而是返回未经解析的表达式。

示例
结果
{ $literal: { $add: [ 2, 3 ] } }
{ "$add" : [ 2, 3 ] }
{ $literal: { $literal: 1 } }
{ "$literal" : 1 }

表达式 中,美元符号 $ 被评估为一个字段路径;即提供对字段的访问。例如,$eq 表达式 $eq: ["$price", "$1"] 在文档中执行名为 price 的字段值与名为 1 的字段值之间的相等性检查。

以下示例使用一个 $literal 表达式将包含美元符号 "$1" 的字符串视为一个常量值。

有一个名为 storeInventory 的集合具有以下文档

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" } ] } } }
] )

此操作投影一个名为 costsOneDollar 的字段,该字段包含一个布尔值,表示 price 字段值是否等于字符串 "$1"

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

$project 阶段使用表达式 <field>: 1 来包含 <field> 在输出中。以下示例使用 $literal 返回一个新字段,其值设置为 1

一个 books 集合包含以下文档

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

表达式 { $literal: 1 } 返回一个新字段 editionNumber,并将其值设置为 1

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

操作结果如下

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

返回

线性填充