📖 Scenario: You work at a small online store. The product prices are stored as strings in the database, but you need to calculate total prices as numbers for reports.
🎯 Goal: Build a MongoDB aggregation pipeline that converts price strings to integers using $toInt and then converts the total back to a string using $toString.
📋 What You'll Learn
Create a collection named products with documents containing name and price as strings.
Add a variable to hold the conversion target type.
Use $toInt to convert the price field to an integer.
Use $toString to convert the total price back to a string.
💡 Why This Matters
🌍 Real World
Many databases store numbers as strings for flexibility, but calculations require numeric types. Using $toInt and $toString helps convert data types during aggregation for accurate reports.
💼 Career
Data analysts and backend developers often need to convert data types in MongoDB to prepare data for calculations, reporting, and data cleaning.
Progress0 / 4 steps
1
Create the products collection with price strings
Create a collection called products with these exact documents: { name: "Pen", price: "10" }, { name: "Notebook", price: "25" }, and { name: "Eraser", price: "5" }.
MongoDB
Hint
Use insertMany to add multiple documents to the products collection.
2
Add a variable for the target type conversion
Create a variable called targetType and set it to the string "int" to represent the integer conversion target.
MongoDB
Hint
Use const targetType = "int" to define the type for conversion.
3
Convert the price field to integer using $toInt
Write an aggregation pipeline that uses $addFields to add a new field priceInt which converts the price string to an integer using $toInt.
MongoDB
Hint
Use $addFields to add priceInt and convert price with $toInt.
4
Convert the total price back to string using $toString
Extend the aggregation pipeline by adding a $group stage to sum all priceInt values into totalPrice, then add a $project stage to convert totalPrice to a string field called totalPriceString using $toString.
MongoDB
Hint
Use $group to sum priceInt and $project to convert the sum to string with $toString.
Practice
(1/5)
1. What does the $toInt expression do in MongoDB aggregation?
easy
A. Converts a value to a date
B. Converts a value to an integer (whole number)
C. Converts a value to a boolean (true/false)
D. Converts a value to a string (text)
Solution
Step 1: Understand the purpose of $toInt
The $toInt operator converts values to integers, which are whole numbers without decimals.
Step 2: Compare with other conversion types
$toString converts to text, $toBool to boolean, and $toDate to date. So $toInt specifically converts to integer.
Final Answer:
Converts a value to an integer (whole number) -> Option B
Quick Check:
$toInt = integer conversion [OK]
Hint: Remember: Int means whole number, String means text [OK]
Common Mistakes:
Confusing $toInt with $toString
Thinking $toInt converts to decimal numbers
Mixing up $toInt with boolean conversion
2. Which of the following is the correct syntax to convert a field age to string in a MongoDB aggregation pipeline?
easy
A. { $toInt: "$age" }
B. { $toString: age }
C. { $toString: "$age" }
D. { toString: "$age" }
Solution
Step 1: Identify correct operator and field reference
The operator for string conversion is $toString. Field names must be referenced as strings with a $ prefix inside quotes, like "$age".
Step 2: Check syntax correctness
{ $toString: "$age" } uses correct operator and field reference. { $toString: age } misses quotes around field. { $toInt: "$age" } uses wrong operator $toInt. { toString: "$age" } misses $ sign before operator.
Final Answer:
{ $toString: "$age" } -> Option C
Quick Check:
Use $ and quotes for fields, $toString for string conversion [OK]
Hint: Use $ before field names and operators in MongoDB [OK]
Common Mistakes:
Omitting quotes around field names
Forgetting $ before operator
Using wrong operator for conversion
3. Given the document { "score": "85" }, what will be the result of this aggregation expression: { $toInt: "$score" }?
medium
A. 85 (as an integer)
B. "85" (as a string)
C. null
D. Error: Cannot convert string to int
Solution
Step 1: Understand input and conversion
The field "score" is a string "85". Using $toInt converts this string to the integer 85.
Step 2: Confirm output type
The output will be the number 85, not a string or error, because "85" is a valid numeric string.
Final Answer:
85 (as an integer) -> Option A
Quick Check:
String "85" to int = 85 [OK]
Hint: Numeric strings convert cleanly to integers [OK]
Common Mistakes:
Expecting output to remain a string
Thinking conversion causes error
Confusing null with error
4. You wrote this aggregation expression: { $toInt: 123abc }. What is the problem?
medium
A. It returns null silently
B. It converts to integer 123
C. It converts to string "123abc"
D. Syntax error because 123abc is not a valid number or string
Solution
Step 1: Analyze the input value
The value 123abc is not a valid number or quoted string. MongoDB expects a number or string literal for conversion.
Step 2: Understand MongoDB parsing rules
Without quotes, 123abc is invalid syntax, causing a syntax error.
Final Answer:
Syntax error because 123abc is not a valid number or string -> Option D
Quick Check:
Invalid literals cause syntax errors [OK]
Hint: Always quote strings; invalid literals cause errors [OK]
Common Mistakes:
Assuming partial conversion works
Forgetting to quote strings
Expecting silent null return
5. You have a collection with documents like { "value": 123 } and { "value": "456" }. You want to create a new field valueStr that is always a string. Which aggregation expression correctly converts value to string regardless of original type?
hard
A. { $toString: "$value" }
B. { $toInt: "$value" }
C. { $toString: value }
D. { $toString: { $toInt: "$value" } }
Solution
Step 1: Understand the data types
Some values are numbers (123), some are strings ("456"). We want to convert all to strings.
Step 2: Choose correct conversion
$toString converts any type to string. Using { $toString: "$value" } converts both numbers and strings to string type.
Step 3: Evaluate other options
{ $toInt: "$value" } converts to int, not string. { $toString: value } misses quotes around field name. { $toString: { $toInt: "$value" } } converts to int then string, unnecessary and may cause errors if string is non-numeric.
Final Answer:
{ $toString: "$value" } -> Option A
Quick Check:
Use $toString with quoted field for consistent string conversion [OK]
Hint: Use $toString with "$field" to convert any type to string [OK]
Common Mistakes:
Missing quotes around field name
Using $toInt instead of $toString
Unnecessary double conversion causing errors
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.