Bird
Raised Fist0
MongoDBquery~5 mins

Date expressions ($year, $month, $dayOfMonth) in MongoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the $year date expression do in MongoDB?
The $year expression extracts the year part from a date value in MongoDB documents.
Click to reveal answer
beginner
How does $month work in MongoDB date expressions?
The $month expression extracts the month (1-12) from a date value in MongoDB documents.
Click to reveal answer
beginner
What value range does $dayOfMonth return in MongoDB?
$dayOfMonth returns the day of the month as a number from 1 to 31, based on the date value.
Click to reveal answer
intermediate
Write a MongoDB aggregation snippet to get the year from a field called createdAt.
Use { $year: "$createdAt" } inside a $project or $addFields stage to extract the year.
Click to reveal answer
intermediate
Why are date expressions like $year, $month, and $dayOfMonth useful in MongoDB?
They help break down dates into parts for filtering, grouping, or formatting data easily in aggregation pipelines.
Click to reveal answer
What does { $month: "$dateField" } return in MongoDB?
AThe month number (1-12) from the dateField
BThe day of the week from the dateField
CThe year from the dateField
DThe full date as a string
Which expression extracts the day of the month from a date in MongoDB?
A<code>$dayOfMonth</code>
B<code>$dateToString</code>
C<code>$dayOfYear</code>
D<code>$dayOfWeek</code>
If a date is '2024-06-15', what will { $year: "$date" } return?
A6
B2024
C15
DJune
Which MongoDB stage commonly uses $year, $month, and $dayOfMonth?
A<code>$match</code>
B<code>$group</code>
C<code>$project</code>
DAll of the above
What is the valid range of values returned by $month in MongoDB?
A0 to 11
B1 to 31
C1 to 12
D0 to 23
Explain how to extract the year, month, and day from a date field in MongoDB aggregation.
Think about breaking down a date into parts using MongoDB expressions.
You got /4 concepts.
    Describe a real-life scenario where extracting year, month, and day from dates in MongoDB would be helpful.
    Consider how businesses analyze data over time.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the MongoDB expression {$year: "$dateField"} return when used in an aggregation pipeline?
      easy
      A. The month number of the date
      B. The year part of the date stored in dateField
      C. The full date as a string
      D. The day of the week of the date

      Solution

      1. Step 1: Understand the $year operator

        The $year expression extracts the year component from a date value.
      2. Step 2: Apply to the field dateField

        Using {$year: "$dateField"} returns the year number from the date stored in dateField.
      3. Final Answer:

        The year part of the date stored in dateField -> Option B
      4. Quick Check:

        $year extracts year [OK]
      Hint: Remember $year extracts only the year number from a date [OK]
      Common Mistakes:
      • Confusing $year with $month or $dayOfMonth
      • Expecting a full date string instead of just the year
      • Using $year outside aggregation pipeline
      2. Which of the following is the correct syntax to extract the month from a date field named createdAt in a MongoDB aggregation pipeline?
      easy
      A. { $month: "$createdAt" }
      B. { $month: createdAt }
      C. { month: "$createdAt" }
      D. { $month: "createdAt" }

      Solution

      1. Step 1: Identify correct field reference syntax

        In MongoDB aggregation, field names must be referenced as strings with a $ prefix, like "$createdAt".
      2. Step 2: Confirm correct operator usage

        The operator to extract month is $month, so the correct syntax is { $month: "$createdAt" }.
      3. Final Answer:

        { $month: "$createdAt" } -> Option A
      4. Quick Check:

        Field names need "$" prefix in aggregation [OK]
      Hint: Use "$fieldName" to reference fields inside aggregation [OK]
      Common Mistakes:
      • Omitting quotes and $ prefix around field name
      • Using operator without $ sign
      • Passing field name as plain string without $
      3. Given the following aggregation stage, what will be the output for a document with dateField value of ISODate("2023-07-15T10:00:00Z")?
      { $project: { year: { $year: "$dateField" }, month: { $month: "$dateField" }, day: { $dayOfMonth: "$dateField" } } }
      medium
      A. { year: 2023, month: 7, day: 14 }
      B. { year: 2023, month: 6, day: 15 }
      C. { year: 2023, month: 7, day: 15 }
      D. { year: 2022, month: 7, day: 15 }

      Solution

      1. Step 1: Extract year, month, and day from the date

        The date is July 15, 2023. So, year = 2023, month = 7 (July), day = 15.
      2. Step 2: Confirm output matches extracted values

        The output document will have year: 2023, month: 7, day: 15 as projected.
      3. Final Answer:

        { year: 2023, month: 7, day: 15 } -> Option C
      4. Quick Check:

        Date parts match output [OK]
      Hint: Remember months are 1-based in MongoDB date expressions [OK]
      Common Mistakes:
      • Assuming months start at 0 instead of 1
      • Confusing dayOfMonth with dayOfWeek
      • Misreading the date value
      4. You wrote this aggregation stage to get the day of the month from orderDate:
      { $project: { day: { $dayOfMonth: orderDate } } }
      But it throws an error. What is the mistake?
      medium
      A. Missing quotes and $ before field name in $dayOfMonth
      B. Using $project instead of $match
      C. Field orderDate is not a date type
      D. Incorrect operator; should use $day instead

      Solution

      1. Step 1: Check field reference syntax inside $dayOfMonth

        Field names must be referenced as strings with a $ prefix, so it should be "$orderDate".
      2. Step 2: Identify the cause of error

        Using orderDate without quotes and $ causes a syntax error in aggregation.
      3. Final Answer:

        Missing quotes and $ before field name in $dayOfMonth -> Option A
      4. Quick Check:

        Field names need "$" prefix in aggregation [OK]
      Hint: Always use "$fieldName" inside aggregation expressions [OK]
      Common Mistakes:
      • Forgetting $ and quotes around field names
      • Assuming $day is a valid operator
      • Confusing aggregation stages
      5. You want to group sales documents by the year and month of their saleDate field. Which aggregation pipeline stage correctly groups by year and month using date expressions?
      hard
      A. { $group: { _id: { year: { $year: "$saleDate" }, month: "$month" }, totalSales: { $sum: "$amount" } } }
      B. { $group: { _id: { year: "$year", month: "$month" }, totalSales: { $sum: "$amount" } } }
      C. { $group: { _id: { year: { $year: saleDate }, month: { $month: saleDate } }, totalSales: { $sum: "$amount" } } }
      D. { $group: { _id: { year: { $year: "$saleDate" }, month: { $month: "$saleDate" } }, totalSales: { $sum: "$amount" } } }

      Solution

      1. Step 1: Use correct field references with $year and $month

        Field names must be referenced as strings with $ prefix, so "$saleDate" is correct.
      2. Step 2: Verify grouping keys and sum operator

        Grouping by year and month extracted from saleDate and summing amount is done correctly in { $group: { _id: { year: { $year: "$saleDate" }, month: { $month: "$saleDate" } }, totalSales: { $sum: "$amount" } } }.
      3. Final Answer:

        { $group: { _id: { year: { $year: "$saleDate" }, month: { $month: "$saleDate" } }, totalSales: { $sum: "$amount" } } } -> Option D
      4. Quick Check:

        Correct field references and operators used [OK]
      Hint: Group by {_id: {year: {$year: "$field"}, month: {$month: "$field"}}} [OK]
      Common Mistakes:
      • Using field names without $ and quotes
      • Mixing string field names with expressions
      • Incorrectly mixing aggregation operators
      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