$switch
The `$switch` operator is used to evaluate a series of conditions and return a value based on the first condition that evaluates to true.
Syntax
{
$switch: {
branches: [
{ case: <expression>, then: <expression> },
{ case: <expression>, then: <expression> }
],
default: <expression>
}
}
Parameters
branches
objectrequiredAn array of documents, each containing case and then expressions
case
objectrequiredAn expression that evaluates to either `true` or `false`
then
objectrequiredThe expression to return if the associated `case` expression evaluates to `true`
default
objectThe expression to return if none of the `case` expressions evaluate to `true`
Examples
Determine staff type based on counts
This query determines the type of staff based on their count.
Query:
db.stores.aggregate([{
$project: {
name: 1,
staffType: {
$switch: {
branches: [{
case: { $eq: ["$staff.totalStaff.partTime", 0] },
then: "Only Full time"
},
{
case: { $eq: ["$staff.totalStaff.fullTime", 0] },
then: "Only Part time"
}
],
default: "Both"
}
}
}
},
{ $limit: 3 }
])
Output:
[
{ "_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5", "name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile", "staffType": "Only Full time" },
{ "_id": "649626c9-eda1-46c0-a27f-dcee19d97f41", "name": "VanArsdel, Ltd. | Musical Instrument Outlet - East Cassie", "staffType": "Both" },
{ "_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34", "name": "Northwind Traders | Bed and Bath Place - West Oraland", "staffType": "Both" }
]