-
Type: New Feature
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Linq
-
None
We've decided to add the following operators:
- $isoWeek
- $isoDayOfWeek
- $isoYear
And to add the corresponding substitutions "%G", "%V", and "%u" to the $dateToString expression.
Example
Input
{_id: 0, date: ISODate("2016-01-01T00:00:00Z")} // Thu, Jan 1, 2016
Pipeline
db.coll.aggregate([{ $project: { dayOfWeek: {$dayOfWeek: "$date"}, isoDayOfWeek: {$isoDayOfWeek: "$date"}, year: {$year: "$date"}, isoYear: {$isoYear: "$date"}, week: {$week: "$date"}, isoWeek: {$isoWeek: "$date"}, isoString: {$dateToString: {format: "%G-W%V-%u", date: "$date"}} } }])
Output
{ _id: 0, dayOfWeek: 6, // 1 is Sunday, 7 is Saturday isoDayOfWeek: 5, // 1 is Monday, 7 is Sunday year: 2016, isoYear: 2015, // 2016 starts on Jan 4th under ISO calendar. week: 0, isoWeek: 53, isoString: "2015-W53-5" // $dateToString is also modified to support // the concepts above. }
Additional Notes
- See the wikipedia article on the ISO-8601 standard.
- Throws an error if the input is not a Date
Original Description
It would be very useful for $week to have an option to start from Monday. Get it from current locale, is first that came in my mind.
- depends on
-
SERVER-7695 Add variants of $week, $year, $dayOfWeek that conform to the ISO-6801 spec
- Closed
- is depended on by
-
DRIVERS-297 Aggregation Framework Support for 3.4
- Closed