Bird
Raised Fist0
MongoDBquery~10 mins

String expressions ($concat, $toUpper, $toLower) in MongoDB - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - String expressions ($concat, $toUpper, $toLower)
Start with input strings
↓
Apply $concat to join strings
↓
Apply $toUpper or $toLower to change case
↓
Output transformed string
This flow shows how MongoDB string expressions combine and change case of strings step-by-step.
Execution Sample
MongoDB
db.collection.aggregate([
  { $addFields: {
    fullName: { $concat: ["John", " ", "Doe"] }
  } },
  { $addFields: {
    shoutName: { $toUpper: "$fullName" }
  } },
  { $addFields: {
    whisperName: { $toLower: "$fullName" }
  } }
])
This aggregation creates a full name by joining strings, then makes uppercase and lowercase versions.
Execution Table
StepExpressionInput ValuesOperationResult
1$concat["John", " ", "Doe"]Join strings with space"John Doe"
2$toUpper"John Doe"Convert all letters to uppercase"JOHN DOE"
3$toLower"John Doe"Convert all letters to lowercase"john doe"
4End-All expressions evaluatedOutput fields: fullName, shoutName, whisperName
💡 All string expressions processed, final transformed strings ready.
Variable Tracker
VariableStartAfter $concatAfter $toUpperAfter $toLower
fullNameundefined"John Doe""John Doe""John Doe"
shoutNameundefinedundefined"JOHN DOE""JOHN DOE"
whisperNameundefinedundefinedundefined"john doe"
Key Moments - 2 Insights
Why does $toUpper and $toLower use the fullName field as input?
Because $concat creates the fullName string first (see execution_table step 1), then $toUpper and $toLower transform that result (steps 2 and 3).
Can $concat join non-string values directly?
No, $concat expects strings. Non-string values must be converted to strings first, otherwise it causes an error.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of $concat at step 1?
A"JohnDoe"
B"John Doe"
C"John Doe"
D"john doe"
💡 Hint
Check the 'Result' column in execution_table row for step 1.
At which step does the string become all uppercase?
AStep 2
BStep 1
CStep 3
DStep 4
💡 Hint
Look at the 'Operation' and 'Result' columns in execution_table for step 2.
If we swapped $toUpper and $toLower order, what would change in variable_tracker?
ANo change at all
BfullName would change
CshoutName and whisperName values would swap after step 3 and 4
DThe $concat result would be different
💡 Hint
Check variable_tracker columns 'After $toUpper' and 'After $toLower' for shoutName and whisperName.
Concept Snapshot
$concat: joins multiple strings into one
$toUpper: converts string to all uppercase letters
$toLower: converts string to all lowercase letters
Use in $project or $addFields to transform string fields
Order matters: apply $concat before case changes
Full Transcript
This visual execution trace shows how MongoDB string expressions $concat, $toUpper, and $toLower work step-by-step. First, $concat joins strings like "John", " ", and "Doe" into "John Doe". Then $toUpper converts "John Doe" to "JOHN DOE" and $toLower converts it to "john doe". Variables track these changes after each step. Key points include that $concat must run before case changes and that $concat only works with strings. The quiz tests understanding of each step's output and the effect of changing expression order.

Practice

(1/5)
1. What does the MongoDB expression {$toUpper: "hello"} do?
easy
A. Joins the string "hello" with another string
B. Converts the string "hello" to lowercase "hello"
C. Converts the string "hello" to uppercase "HELLO"
D. Removes spaces from the string "hello"

Solution

  1. Step 1: Understand $toUpper usage

    The $toUpper operator converts all letters in a string to uppercase.
  2. Step 2: Apply $toUpper to "hello" string

    Applying $toUpper to "hello" changes it to "HELLO".
  3. Final Answer:

    Converts the string "hello" to uppercase "HELLO" -> Option C
  4. Quick Check:

    $toUpper("hello") = "HELLO" [OK]
Hint: Remember $toUpper makes all letters uppercase [OK]
Common Mistakes:
  • Confusing $toUpper with $toLower
  • Thinking $toUpper joins strings
  • Assuming it removes spaces
2. Which of the following is the correct syntax to concatenate two fields firstName and lastName in MongoDB aggregation?
easy
A. {$concat: "$firstName" + " " + "$lastName"}
B. {$concat: ["$firstName", " ", "$lastName"]}
C. {$concat: "$firstName", " ", "$lastName"}
D. {$concat: "$firstName $lastName"}

Solution

  1. Step 1: Recall $concat syntax

    $concat requires an array of strings or field references to join them.
  2. Step 2: Check each option's syntax

    {$concat: ["$firstName", " ", "$lastName"]} correctly uses an array with field references and a space string. Others misuse concatenation or array syntax.
  3. Final Answer:

    {$concat: ["$firstName", " ", "$lastName"]} -> Option B
  4. Quick Check:

    $concat needs array of strings [OK]
Hint: Use array syntax with $concat for multiple strings [OK]
Common Mistakes:
  • Using + operator inside $concat
  • Passing arguments without array brackets
  • Putting fields inside a single string
3. Given the document {"name": "alice", "surname": "smith"}, what is the output of this aggregation expression?
{ $concat: [ { $toUpper: "$name" }, " ", { $toLower: "$surname" } ] }
medium
A. "Alice Smith"
B. "alice smith"
C. "ALICE SMITH"
D. "ALICE smith"

Solution

  1. Step 1: Apply $toUpper to "name" field

    The "name" field is "alice", $toUpper converts it to "ALICE".
  2. Step 2: Apply $toLower to "surname" field and concatenate

    The "surname" field is "smith", $toLower keeps it "smith". Then $concat joins "ALICE", space, and "smith".
  3. Final Answer:

    "ALICE smith" -> Option D
  4. Quick Check:

    $toUpper("alice") + " " + $toLower("smith") = "ALICE smith" [OK]
Hint: Apply $toUpper and $toLower before concatenation [OK]
Common Mistakes:
  • Assuming $toLower changes uppercase to title case
  • Mixing order of operations
  • Forgetting to use $concat array
4. Identify the error in this MongoDB aggregation expression:
{ $concat: "$firstName", " ", "$lastName" }
medium
A. Missing array brackets around the arguments for $concat
B. Using double quotes instead of single quotes
C. Incorrect field names without $ prefix
D. Using $concat instead of $toUpper

Solution

  1. Step 1: Check $concat argument format

    $concat requires a single array argument containing strings or field references.
  2. Step 2: Identify missing array brackets

    The expression passes multiple arguments without wrapping them in an array, causing syntax error.
  3. Final Answer:

    Missing array brackets around the arguments for $concat -> Option A
  4. Quick Check:

    $concat([...]) needs array brackets [OK]
Hint: Always wrap $concat inputs in an array [OK]
Common Mistakes:
  • Passing multiple arguments without array
  • Confusing $concat with string concatenation operator
  • Not prefixing field names with $
5. You want to create a new field fullName in your aggregation pipeline that combines firstName and lastName with a space, but both names should be in uppercase. Which expression correctly achieves this?
hard
A. {$concat: [{$toUpper: "$firstName"}, " ", {$toUpper: "$lastName"}]}
B. {$toLower: {$concat: ["$firstName", " ", "$lastName"]}}
C. {$concat: ["$firstName", " ", "$lastName"]}
D. {$toLower: {$concat: [{$toUpper: "$firstName"}, " ", {$toUpper: "$lastName"}]}}

Solution

  1. Step 1: Understand requirement for uppercase names

    Both firstName and lastName must be converted to uppercase individually before concatenation.
  2. Step 2: Analyze each option's logic

    {$concat: [{$toUpper: "$firstName"}, " ", {$toUpper: "$lastName"}]} applies $toUpper to each field separately, then concatenates with space. {$toLower: {$concat: ["$firstName", " ", "$lastName"]}} concatenates first, then lowercases whole string, resulting in lowercase. {$concat: ["$firstName", " ", "$lastName"]} does no uppercase. {$toLower: {$concat: [{$toUpper: "$firstName"}, " ", {$toUpper: "$lastName"}]}} converts final string to lowercase, which is wrong.
  3. Final Answer:

    {$concat: [{$toUpper: "$firstName"}, " ", {$toUpper: "$lastName"}]} -> Option A
  4. Quick Check:

    Uppercase each name then join with space [OK]
Hint: Uppercase each name before concat for correct result [OK]
Common Mistakes:
  • Uppercasing after concatenation changes space too
  • Not applying $toUpper to both fields
  • Using $toLower mistakenly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard