Skip to content

$cond

The $cond operator is a conditional (if–then–else) operator.

It evaluates a condition and returns one of two expressions depending on whether the condition is true or false.


πŸ“Œ Syntax

βœ… Object Syntax

{
  "$cond": {
    "if": <condition>,
    "then": <expression-if-true>,
    "else": <expression-if-false>
  }
}

βœ… Array Syntax

{ "$cond": [ <condition>, <then>, <else> ] }

βœ… Base Example 1 – Membership Status

πŸ“₯ Input Document

{ "isMember": true }

πŸ“Œ Expression

{
  "$cond": {
    "if": "$isMember",
    "then": "Discounted",
    "else": "Regular"
  }
}

πŸ“€ Output

"Discounted"

βœ… Base Example 2 – Array Syntax

πŸ“₯ Input Document

{ "score": 65 }

πŸ“Œ Expression

{ "$cond": [ { "$gte": ["$score", 70] }, "Pass", "Fail" ] }

πŸ“€ Output

"Fail"

🧱 Ecommerce Example – Shipping Fee Waiver

πŸ“Œ Pipeline

[
  { "$unwind": "$items" },
  {
    "$project": {
      "name": "$items.name",
      "shippingFee": {
        "$cond": {
          "if": { "$gte": ["$items.price", 100] },
          "then": 0,
          "else": 10
        }
      }
    }
  }
]

πŸ“₯ Input Document

{
  "items": [
    { "name": "Monitor", "price": 150 },
    { "name": "Cable", "price": 20 }
  ]
}

πŸ“€ Output

[
  { "name": "Monitor", "shippingFee": 0 },
  { "name": "Cable", "shippingFee": 10 }
]

πŸ”§ Common Use Cases

  • Apply different logic based on price, quantity, status
  • Select values conditionally inside $project, $group, $map
  • Use inside $reduce, $switch, $filter

  • $ifNull, $switch, $eq, $gt, $lt, $gte, $lte

🧠 Notes

  • Flexible control structure in aggregation pipelines
  • Both array and object syntax are supported by MongoDB (and Fluxion)