$cond (条件式)

最終更新:2026-10-09

$cond (条件式)

$cond は if-then-else の三項ロジックを実装し、集計式で最も基本的な分岐演算子です。{ if, then, else } のオブジェクト形式と [ 条件, true の結果, false の結果 ] の配列形式の 2 つをサポートし、どちらも等価です。代表的な用途は、注文金額からの配送ランクの計算や、ステータスコードからラベルへの変換です。条件は真偽規則に従うため、ブール値以外でも動作します。分岐が多い場合は $switch の方が読みやすくなります。

カテゴリ集合・条件・変換
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $cond: { if: <condition>, then: <result1>, else: <result2> } } or { $cond: [ <condition>, <result1>, <result2> ] }

⚙️ パラメータ

if/条件分岐を選択する式。真偽で判定されます。
then/結果1条件が真の場合の結果。
else/結果2条件が偽の場合の結果。

戻り値:条件が真の場合は result1、それ以外は result2

▶ 例

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

// $cond: 100 を超える金額は大口注文
db.orders.aggregate([
  { $project: {
      level: { $cond: { if: { $gt: ['$amount', 100] }, then: 'big', else: 'small' } }
  } }
])

出力:

{ '_id': 1, 'level': 'big' }
{ '_id': 2, 'level': 'small' }

📌 注意事項

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

📚 関連チュートリアル

❓ よくある質問

Q条件はブール値でなくてもいいですか?
Aはい — 真偽規則が適用され、0、null、'' は偽になります。
Q2 つの形式の違いは?
Aありません — 意味は同一で、構文だけが異なります。
Q分岐が多い場合は?
A$switch を使います。順に評価され、最初に真になった分岐が採用されます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%