$literal (リテラル)
最終更新:2026-10-09
$literal (リテラル)
$literal は値を式として解釈せずに返します。$ で始まる文字列をプレーンテキストとして出力したい場合や、数値リテラルの型を正確に保ちたい場合に使います。例えば { $project: { prefix: { $literal: '$' } } } は文字列 '$' を出力します。'$' を直接書くとフィールドパスとして扱われてしまいます。$cond や $switch 内でリテラルのブール値や数値引数を渡すのにも便利です。$project で定数を出力する最も簡潔な方法です。
| カテゴリ | リテラル・変数・オブジェクト |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $literal: <value> }
⚙️ パラメータ
| 値 | 任意の値または式。$ で始まる文字列はリテラルとして扱われます。 |
|---|
戻り値:渡された値を式として解析せずそのまま返します
▶ 例
以下のコマンドをローカルの 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評価されません。リテラルの内容がそのまま返されます。