$literal(字面量)
最后更新:2026-10-09
$literal(字面量)
$literal返回一个不被解析为表达式的字面值,常用于需要把以$开头的字符串当普通文本、或保持数值类型不被转换的场景。例如{ $project: { prefix: { $literal: '$' } } }会输出字符串'$',而直接写'$'会被当成字段路径。$literal也用于$cond、$switch等需要字面真值的场合。它是$project中输出常量最简洁的方式。
| 分类 | 字面·变量·对象 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $literal: <值> }
⚙️ 参数
| 值 | 任意值或表达式;以$开头的字符串按字面处理。 |
|---|
返回值:原样返回传入的值,不解析为表达式
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $literal:输出以$开头的字符串常量
db.orders.aggregate([
{ $project: {
currency: { $literal: '$' },
rate: { $literal: 0.08 }
} }
])
运行结果:
{ '_id': 1, 'currency': '$', 'rate': 0.08 }
{ '_id': 2, 'currency': '$', 'rate': 0.08 }
📌 注意事项
- 以$开头的字符串直接写会被当作字段路径,必须用$literal
- $literal内的表达式不会被求值
- 常与$cond、$ifNull等操作符配合提供默认值
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$literal有什么用?
A输出以$开头或其他不被解析的常量,防止被当成字段路径。
Q不写$literal会怎样?
A$开头的字符串会被当作字段路径解析,取不到字段就返回null。
Q$literal能包表达式吗?
A包了也不会求值,原样返回字面内容。