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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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

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)

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)

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)

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

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

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

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

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

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

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

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

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

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") }
Keep Going!MongoDB - Array Operators