- Reference >
- Operators >
- Aggregation Pipeline Operators >
- Conditional Aggregation Operators >
- $switch (aggregation)
$switch (aggregation)¶
On this page
Definition¶
-
$switch¶ New in version 3.4.
Evaluates a series of case expressions. When it finds an expression which evaluates to
true,$switchexecutes a specified expression and breaks out of the control flow.$switchhas the following syntax:The objects in the
branchesarray must contain only acasefield and athenfield.Operand Description branchesAn array of control branch documents. Each branch is a document with the following fields:
case- Can be any valid expression that resolves to a
boolean. If the result is not aboolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.
then- Can be any valid expression.
The
branchesarray must contain at least one branch document.defaultOptional. The path to take if no branch
caseexpression evaluates totrue.Although optional, if
defaultis unspecified and no branchcaseevaluates to true,$switchreturns an error.
Behavior¶
The various case statements do not need to be mutually exclusive.
$switch executes the first branch it finds which
evaluates to true. If none of the branches evaluates to true,
$switch executes the default option.
The following conditions cause $switch to fail with an
error:
- The
branchesfield is missing or is not an array with at least one entry. - An object in the
branchesarray does not contain acasefield. - An object in the
branchesarray does not contain athenfield. - An object in the
branchesarray contains a field other thancaseorthen. - No
defaultis specified and nocaseevaluates totrue.
| Example | Results |
|---|---|
"less than" |
|
"Did not match" |
|
"First case" |