Introduction to MongoDB $isoWeekYear Operator
In MongoDB, $isoWeekYear
is an aggregation operator used to retrieve the year of an ISO week date. This operator returns the ISO week year of a date, which differs from the Gregorian calendar year in that the ISO week year is calculated based on weeks, and the first week of each year must have at least 4 days. If the first week of a year has less than 4 days, it is considered as the last week of the previous year.
Syntax
The syntax of the $isoWeekYear
operator is as follows:
{ $isoWeekYear: <dateExpression> }
Here, dateExpression
represents the date expression to be computed, which can be any expression that returns a date.
Use cases
The $isoWeekYear
operator is typically used in aggregation operations to compute data for a specific time period. For example, you can use the $isoWeekYear
operator to compute the sales amount for each week in a given year.
Example
Suppose you have a sales
collection containing the following documents:
{ "_id": 1, "date": ISODate("2022-02-25T10:10:00Z"), "amount": 100 }
{ "_id": 2, "date": ISODate("2022-02-27T14:20:00Z"), "amount": 200 }
{ "_id": 3, "date": ISODate("2022-03-01T09:30:00Z"), "amount": 150 }
{ "_id": 4, "date": ISODate("2023-01-02T16:40:00Z"), "amount": 300 }
You can use the following aggregation operation with the $isoWeekYear
operator to compute the ISO week year of each sale and the total sales amount for each week:
db.sales.aggregate([
{
$group: {
_id: {
weekYear: { $isoWeekYear: "$date" },
week: { $week: "$date" }
},
totalAmount: { $sum: "$amount" }
}
}
])
After executing the above aggregation operation, the following results will be returned:
{ "_id": { "weekYear": 2022, "week": 8 }, "totalAmount": 300 }
{ "_id": { "weekYear": 2022, "week": 9 }, "totalAmount": 150 }
{ "_id": { "weekYear": 2023, "week": 1 }, "totalAmount": 300 }
Conclusion
The $isoWeekYear
operator can be used to easily retrieve the ISO week year of a date for computing data for a specific time period. In aggregation operations, you can combine the $isoWeekYear
operator with other operators, such as the $week
operator, to perform more detailed data analysis and computation.