Nearby lessons

17 of 22

🗓️ MongoDB: Date Aggregation Operators

MongoDB provides powerful Date Aggregation Operators that allow you to manipulate and extract components such as year, month, day, hour, and more from date fields. These operators are essential when performing time-based analytics, formatting dates, and creating reports.

📚 Initial Data Setup — students (dob as string)

Example01
MongoDB Shell
NoSQL
Database
1db.students.insertMany([
2 { _id: 1, name: 'Akshay Kumar', dob: 'jan 10 2010' },
3 { _id: 2, name: 'Salman Khan', dob: '2010-02-03' },
4 { _id: 3, name: 'Deepika Padukone', dob: 'june 15 2010' }
5]);
Query Result
JSON Output
✅ 3 student documents inserted successfully.

📘 Initial Data Setup — students3 (dob as ISODate)

Example02
MongoDB Shell
NoSQL
Database
1db.students3.insertMany([
2 { _id: 1, name: 'Akshay Kumar', dob: ISODate('2010-01-10T05:30:00Z') },
3 { _id: 2, name: 'Salman Khan', dob: ISODate('2010-02-03T14:45:20Z') }
4]);
Query Result
JSON Output
✅ 2 student documents inserted successfully.

1️⃣ $hour — Extract Hour (0–23)

Example03
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, hour: { $hour: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", hour: 5 }
{ name: "Salman Khan", hour: 14 }

2️⃣ $minute — Extract Minute (0–59)

Example04
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, minute: { $minute: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", minute: 30 }
{ name: "Salman Khan", minute: 45 }

3️⃣ $second — Extract Second (0–59)

Example05
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, second: { $second: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", second: 0 }
{ name: "Salman Khan", second: 20 }

4️⃣ $millisecond — Extract Milliseconds (0–999)

Example06
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, ms: { $millisecond: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", ms: 0 }
{ name: "Salman Khan", ms: 0 }

5️⃣ $dayOfMonth — Day of Month (1–31)

Example07
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, dayOfMonth: { $dayOfMonth: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", dayOfMonth: 10 }
{ name: "Salman Khan", dayOfMonth: 3 }

6️⃣ $dayOfWeek — Day of Week (1=Sunday…7=Saturday)

Example08
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, dayOfWeek: { $dayOfWeek: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", dayOfWeek: 1 }
{ name: "Salman Khan", dayOfWeek: 4 }

7️⃣ $dayOfYear — Day of Year (1–366)

Example09
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, dayOfYear: { $dayOfYear: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", dayOfYear: 10 }
{ name: "Salman Khan", dayOfYear: 34 }

8️⃣ $week — Week of Year (1–53)

Example10
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, week: { $week: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", week: 2 }
{ name: "Salman Khan", week: 5 }

9️⃣ $isoWeek — ISO Week (1–53)

Example11
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, isoWeek: { $isoWeek: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", isoWeek: 2 }
{ name: "Salman Khan", isoWeek: 5 }

🔟 $isoWeekYear — ISO Week-Year

Example12
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, isoWeekYear: { $isoWeekYear: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", isoWeekYear: 2010 }
{ name: "Salman Khan", isoWeekYear: 2010 }

1️⃣1️⃣ $isoDayOfWeek — ISO Day of Week (1=Mon…7=Sun)

Example13
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, isoDayOfWeek: { $isoDayOfWeek: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", isoDayOfWeek: 7 }
{ name: "Salman Khan", isoDayOfWeek: 4 }

1️⃣2️⃣ $month — Month (1–12)

Example14
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, month: { $month: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", month: 1 }
{ name: "Salman Khan", month: 2 }

1️⃣3️⃣ $year — Year (e.g., 2010)

Example15
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, year: { $year: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", year: 2010 }
{ name: "Salman Khan", year: 2010 }

1️⃣4️⃣ $dateFromString — Parse String to Date

Example16
MongoDB Shell
NoSQL
Database
1db.students.aggregate([
2 {
3 $project: {
4 name: 1,
5 dobDate: {
6 $dateFromString: { dateString: '$dob', format: '%b %d %Y' }
7 }
8 }
9 }
10]);
Query Result
JSON Output
{ name: "Akshay Kumar", dobDate: ISODate("2010-01-10T00:00:00Z") }
{ name: "Deepika Padukone", dobDate: ISODate("2010-06-15T00:00:00Z") }

1️⃣5️⃣ $dateToString — Format Date as String

Example17
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 dobStr: { $dateToString: { date: '$dob', format: '%Y-%m-%d' } }
6 }
7 }
8]);
Query Result
JSON Output
{ name: "Akshay Kumar", dobStr: "2010-01-10" }
{ name: "Salman Khan", dobStr: "2010-02-03" }

1️⃣6️⃣ $dateFromParts — Build a Date from Components

Example18
MongoDB Shell
NoSQL
Database
1db.students2.aggregate([
2 {
3 $project: {
4 _id: 0,
5 constructed: {
6 $dateFromParts: { year: 2020, month: 12, day: 25, hour: 10, minute: 0 }
7 }
8 }
9 }
10]);
Query Result
JSON Output
{ constructed: ISODate("2020-12-25T10:00:00Z") }

1️⃣7️⃣ $dateToParts — Decompose a Date

Example19
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 { $project: { name: 1, parts: { $dateToParts: { date: '$dob', timezone: 'UTC' } } } }
3]);
Query Result
JSON Output
{ name: "Akshay Kumar", parts: { year:2010, month:1, day:10, hour:5, minute:30, second:0, millisecond:0 } }

1️⃣8️⃣ $toDate — Convert Value to Date

Example20
MongoDB Shell
NoSQL
Database
1db.students.aggregate([
2 { $project: { name: 1, dobIso: { $toDate: '$dob' } } }
3]);
Query Result
JSON Output
{ name: "Salman Khan", dobIso: ISODate("2010-02-03T00:00:00Z") }

1️⃣9️⃣ $dateAdd — Add Time to a Date

Example21
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 plusOneWeek: { $dateAdd: { startDate: '$dob', unit: 'week', amount: 1 } }
6 }
7 }
8]);
Query Result
JSON Output
{ name: "Akshay Kumar", plusOneWeek: ISODate("2010-01-17T05:30:00Z") }

2️⃣0️⃣ $dateSubtract — Subtract Time from a Date

Example22
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 minusOneDay: { $dateSubtract: { startDate: '$dob', unit: 'day', amount: 1 } }
6 }
7 }
8]);
Query Result
JSON Output
{ name: "Salman Khan", minusOneDay: ISODate("2010-02-02T14:45:20Z") }

2️⃣1️⃣ $dateDiff — Difference Between Dates

Example23
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 {
3 $project: {
4 diffDays: {
5 $dateDiff: {
6 startDate: ISODate("2010-01-01"),
7 endDate: '$dob',
8 unit: 'day'
9 }
10 }
11 }
12 }
13]);
Query Result
JSON Output
{ diffDays: 9 }
{ diffDays: 33 }

2️⃣2️⃣ $dateTrunc — Truncate Date to Unit

Example24
MongoDB Shell
NoSQL
Database
1db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 monthStart: { $dateTrunc: { date: '$dob', unit: 'month' } }
6 }
7 }
8]);
Query Result
JSON Output
{ name: "Akshay Kumar", monthStart: ISODate("2010-01-01T00:00:00Z") }