$isoWeekYear (aggregation)
Definition
New in version 3.4.
Returns the year number in ISO 8601 format. The year startswith the Monday of week 1 and ends with the Sunday of thelast week.
The $isoWeekYear
expression has the followingoperator expression syntax:
- { $isoWeekYear: <dateExpression> }
Changed in version 3.6.
The argument must be a valid expression that resolves to one of the following:
New in version 3.6.
- { date: <dateExpression>, timezone: <tzExpression> }
FieldDescriptiondate
The date to which the operator is applied.<dateExpression>
must be a valid expression that resolves to aDate, aTimestamp,or an ObjectID.timezone
Optional.
The timezone of the operation result.<tzExpression>
must be a valid expression that resolves to a string formatted as eitheran Olson Timezone Identifier or aUTC Offset.If no timezone
is provided, the result is displayed in UTC
.
Format
Examples
Olson Timezone Identifier
- "America/New_York"
- "Europe/London"
- "GMT"
UTC Offset
- +/-[hh]:[mm], e.g. "+04:45"
- +/-[hh][mm], e.g. "-0530"
- +/-[hh], e.g. "+03"
Behavior
Example | Result |
---|---|
| 2015 |
| 2003 |
| 2017 |
| 2016 |
| 2024 |
| error |
| error |
| error |
Note
$isoWeekYear
cannot take a string as an argument.
Example
A collection called anniversaries
contains the following documents:
- { "_id" : 1, "date" : ISODate("2016-01-01T00:00:00Z") }
- { "_id" : 2, "date" : ISODate("2016-01-04T00:00:00Z") }
- { "_id" : 3, "date" : ISODate("2015-01-01T00:00:00Z") }
- { "_id" : 4, "date" : ISODate("2014-04-21T00:00:00Z") }
The following operation returns the year number in ISO 8601format for each date
field.
- db.anniversaries.aggregate( [
- {
- $project: {
- yearNumber: { $isoWeekYear: "$date" }
- }
- }
- ] )
The operation returns the following results:
- { "_id" : 1, "yearNumber" : 2015 }
- { "_id" : 2, "yearNumber" : 2016 }
- { "_id" : 3, "yearNumber" : 2015 }
- { "_id" : 4, "yearNumber" : 2014 }
See also