Home / MongoDB Tutorial / 🗓️ MongoDB: Date Aggregation Operators Previous MongoDB - String Operators Next MongoDB - Array Operators
🗓️ 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.
In this lesson
01 📚 Initial Data Setup — students (dob as string)02 📘 Initial Data Setup — students3 (dob as ISODate)03 1️⃣ $hour — Extract Hour (0–23)04 2️⃣ $minute — Extract Minute (0–59)05 3️⃣ $second — Extract Second (0–59)06 4️⃣ $millisecond — Extract Milliseconds (0–999)07 5️⃣ $dayOfMonth — Day of Month (1–31)08 6️⃣ $dayOfWeek — Day of Week (1=Sunday…7=Saturday)09 7️⃣ $dayOfYear — Day of Year (1–366)10 8️⃣ $week — Week of Year (1–53)11 9️⃣ $isoWeek — ISO Week (1–53)12 🔟 $isoWeekYear — ISO Week-Year13 1️⃣1️⃣ $isoDayOfWeek — ISO Day of Week (1=Mon…7=Sun)14 1️⃣2️⃣ $month — Month (1–12)15 1️⃣3️⃣ $year — Year (e.g., 2010)16 1️⃣4️⃣ $dateFromString — Parse String to Date17 1️⃣5️⃣ $dateToString — Format Date as String18 1️⃣6️⃣ $dateFromParts — Build a Date from Components19 1️⃣7️⃣ $dateToParts — Decompose a Date20 1️⃣8️⃣ $toDate — Convert Value to Date21 1️⃣9️⃣ $dateAdd — Add Time to a Date22 2️⃣0️⃣ $dateSubtract — Subtract Time from a Date23 2️⃣1️⃣ $dateDiff — Difference Between Dates24 2️⃣2️⃣ $dateTrunc — Truncate Date to Unit01 📚 Initial Data Setup — students (dob as string) Example01
1 db.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 ]);
✅ 3 student documents inserted successfully.
02 📘 Initial Data Setup — students3 (dob as ISODate) Example02
1 db.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 ]);
✅ 2 student documents inserted successfully.
03 1️⃣ $hour — Extract Hour (0–23) Example03
1 db.students3.aggregate([
2 { $project: { name: 1, hour: { $hour: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", hour: 5 }
{ name: "Salman Khan", hour: 14 }
04 2️⃣ $minute — Extract Minute (0–59) Example04
1 db.students3.aggregate([
2 { $project: { name: 1, minute: { $minute: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", minute: 30 }
{ name: "Salman Khan", minute: 45 }
05 3️⃣ $second — Extract Second (0–59) Example05
1 db.students3.aggregate([
2 { $project: { name: 1, second: { $second: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", second: 0 }
{ name: "Salman Khan", second: 20 }
06 4️⃣ $millisecond — Extract Milliseconds (0–999) Example06
1 db.students3.aggregate([
2 { $project: { name: 1, ms: { $millisecond: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", ms: 0 }
{ name: "Salman Khan", ms: 0 }
07 5️⃣ $dayOfMonth — Day of Month (1–31) Example07
1 db.students3.aggregate([
2 { $project: { name: 1, dayOfMonth: { $dayOfMonth: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", dayOfMonth: 10 }
{ name: "Salman Khan", dayOfMonth: 3 }
08 6️⃣ $dayOfWeek — Day of Week (1=Sunday…7=Saturday) Example08
1 db.students3.aggregate([
2 { $project: { name: 1, dayOfWeek: { $dayOfWeek: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", dayOfWeek: 1 }
{ name: "Salman Khan", dayOfWeek: 4 }
09 7️⃣ $dayOfYear — Day of Year (1–366) Example09
1 db.students3.aggregate([
2 { $project: { name: 1, dayOfYear: { $dayOfYear: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", dayOfYear: 10 }
{ name: "Salman Khan", dayOfYear: 34 }
10 8️⃣ $week — Week of Year (1–53) Example10
1 db.students3.aggregate([
2 { $project: { name: 1, week: { $week: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", week: 2 }
{ name: "Salman Khan", week: 5 }
11 9️⃣ $isoWeek — ISO Week (1–53) Example11
1 db.students3.aggregate([
2 { $project: { name: 1, isoWeek: { $isoWeek: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", isoWeek: 2 }
{ name: "Salman Khan", isoWeek: 5 }
12 🔟 $isoWeekYear — ISO Week-Year Example12
1 db.students3.aggregate([
2 { $project: { name: 1, isoWeekYear: { $isoWeekYear: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", isoWeekYear: 2010 }
{ name: "Salman Khan", isoWeekYear: 2010 }
13 1️⃣1️⃣ $isoDayOfWeek — ISO Day of Week (1=Mon…7=Sun) Example13
1 db.students3.aggregate([
2 { $project: { name: 1, isoDayOfWeek: { $isoDayOfWeek: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", isoDayOfWeek: 7 }
{ name: "Salman Khan", isoDayOfWeek: 4 }
14 1️⃣2️⃣ $month — Month (1–12) Example14
1 db.students3.aggregate([
2 { $project: { name: 1, month: { $month: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", month: 1 }
{ name: "Salman Khan", month: 2 }
15 1️⃣3️⃣ $year — Year (e.g., 2010) Example15
1 db.students3.aggregate([
2 { $project: { name: 1, year: { $year: '$dob' } } }
3 ]);
{ name: "Akshay Kumar", year: 2010 }
{ name: "Salman Khan", year: 2010 }
16 1️⃣4️⃣ $dateFromString — Parse String to Date Example16
1 db.students.aggregate([
2 {
3 $project: {
4 name: 1,
5 dobDate: {
6 $dateFromString: { dateString: '$dob', format: '%b %d %Y' }
7 }
8 }
9 }
10 ]);
{ name: "Akshay Kumar", dobDate: ISODate("2010-01-10T00:00:00Z") }
{ name: "Deepika Padukone", dobDate: ISODate("2010-06-15T00:00:00Z") }
17 1️⃣5️⃣ $dateToString — Format Date as String Example17
1 db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 dobStr: { $dateToString: { date: '$dob', format: '%Y-%m-%d' } }
6 }
7 }
8 ]);
{ name: "Akshay Kumar", dobStr: "2010-01-10" }
{ name: "Salman Khan", dobStr: "2010-02-03" }
18 1️⃣6️⃣ $dateFromParts — Build a Date from Components Example18
1 db.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 ]);
{ constructed: ISODate("2020-12-25T10:00:00Z") }
19 1️⃣7️⃣ $dateToParts — Decompose a Date Example19
1 db.students3.aggregate([
2 { $project: { name: 1, parts: { $dateToParts: { date: '$dob', timezone: 'UTC' } } } }
3 ]);
{ name: "Akshay Kumar", parts: { year:2010, month:1, day:10, hour:5, minute:30, second:0, millisecond:0 } }
20 1️⃣8️⃣ $toDate — Convert Value to Date Example20
1 db.students.aggregate([
2 { $project: { name: 1, dobIso: { $toDate: '$dob' } } }
3 ]);
{ name: "Salman Khan", dobIso: ISODate("2010-02-03T00:00:00Z") }
21 1️⃣9️⃣ $dateAdd — Add Time to a Date Example21
1 db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 plusOneWeek: { $dateAdd: { startDate: '$dob', unit: 'week', amount: 1 } }
6 }
7 }
8 ]);
{ name: "Akshay Kumar", plusOneWeek: ISODate("2010-01-17T05:30:00Z") }
22 2️⃣0️⃣ $dateSubtract — Subtract Time from a Date Example22
1 db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 minusOneDay: { $dateSubtract: { startDate: '$dob', unit: 'day', amount: 1 } }
6 }
7 }
8 ]);
{ name: "Salman Khan", minusOneDay: ISODate("2010-02-02T14:45:20Z") }
23 2️⃣1️⃣ $dateDiff — Difference Between Dates Example23
1 db.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 ]);
{ diffDays: 9 }
{ diffDays: 33 }
24 2️⃣2️⃣ $dateTrunc — Truncate Date to Unit Example24
1 db.students3.aggregate([
2 {
3 $project: {
4 name: 1,
5 monthStart: { $dateTrunc: { date: '$dob', unit: 'month' } }
6 }
7 }
8 ]);
{ name: "Akshay Kumar", monthStart: ISODate("2010-01-01T00:00:00Z") }
Previous MongoDB - String Operators Next MongoDB - Array Operators