$isoWeekYear
Returns the year number in ISO 8601 format. The ISO week-numbering year can differ from the calendar year for dates at the beginning or end of the year. The ISO week year is the year that contains the Thursday of the week in question.
Syntax
$isoWeekYear: <dateExpression>
Parameters
dateExpression
objectrequiredAn expression that resolves to a Date, Timestamp, or ObjectId. If the expression resolves to null or is missing, $isoWeekYear returns null.
Examples
Compare calendar year vs ISO week year
This query demonstrates the difference between calendar year and ISO week year, especially for dates near year boundaries.
Query:
db.stores.aggregate([
{ $match: {_id: "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{ $unwind: "$promotionEvents" },
{
$project: {
eventName: "$promotionEvents.eventName",
startDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.startDate.Year",
month: "$promotionEvents.promotionalDates.startDate.Month",
day: "$promotionEvents.promotionalDates.startDate.Day"
}
},
endDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.endDate.Year",
month: "$promotionEvents.promotionalDates.endDate.Month",
day: "$promotionEvents.promotionalDates.endDate.Day"
}
}
}
},
{
$project: {
eventName: 1,
startDate: 1,
endDate: 1,
startCalendarYear: { $year: "$startDate" },
startISOWeekYear: { $isoWeekYear: "$startDate" },
endCalendarYear: { $year: "$endDate" },
endISOWeekYear: { $isoWeekYear: "$endDate" },
yearDifference: {
$ne: [{ $year: "$startDate" }, { $isoWeekYear: "$startDate" }]
}
}
},
{ $match: {"eventName": "Discount Delight Days" } }
])
Output:
[
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"eventName": "Discount Delight Days",
"startDate": "2023-12-26T00:00:00.000Z",
"endDate": "2024-01-05T00:00:00.000Z",
"startCalendarYear": 2023,
"startISOWeekYear": Long("2023"),
"endCalendarYear": 2024,
"endISOWeekYear": Long("2024"),
"yearDifference": true
}
]