$let (ローカル変数)

最終更新:2026-10-09

$let (ローカル変数)

$let は集計式内でローカル変数を定義し、in 式で使います。複雑な部分式の繰り返し評価を避けるために使われます。構文は { $let: { vars: { name: 式 }, in: 式 } } で、変数は $$name で参照します。中間結果を一度計算して再利用する場合に使われ、例えば割引を適用してから税込み価格を計算するケースです。MongoDB 5.0 以降、vars は [{ name: ..., value: ... }] の配列形式も受け付け、$ プレフィックス付きの変数名をサポートします。

カテゴリリテラル・変数・オブジェクト
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $let: { vars: { <variable>: <expression> }, in: <expression> } }

⚙️ パラメータ

vars変数定義。オブジェクト形式、または MongoDB 5.0 以降では配列形式。
in変数を使用する式。$$name として参照します。

戻り値:in 式の結果

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $let: ローカル変数で割引後の価格を計算
db.orders.aggregate([
  { $project: {
      finalPrice: {
        $let: {
          vars: { base: '$price', discount: { $multiply: ['$price', 0.1] } },
          in: { $subtract: ['$$base', '$$discount'] }
        }
      }
  } }
])

出力:

{ '_id': 1, 'finalPrice': 90 }
{ '_id': 2, 'finalPrice': 45 }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q$let は何に使いますか?
Aローカル変数を定義し、複雑な式を繰り返す代わりに中間結果を再利用します。
Q$let の変数はどう参照しますか?
Ain 式の中で $$name を使います。
Q$let の変数はシステム変数と衝突しますか?
A同名の $let 変数はシステム変数をシャドウするため、名前は慎重に選んでください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%