Details
-
Improvement
-
Status: Closed
-
Major - P3
-
Resolution: Fixed
-
2.1.2, 2.2.0, 2.2.1
-
Fully Compatible
-
Query 12 (04/04/16)
Description
We've decided to add the following operators:
- $isoWeek
- $isoDayOfWeek
- $isoWeekYear
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: {$isoWeekYear: "$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.
Attachments
Issue Links
- is depended on by
-
CSHARP-1623 Add variants of $week, $year, $dayOfWeek that conform to the ISO-6801 spec*
-
- Closed
-
- is documented by
-
DOCS-9548 Docs for SERVER-7695: Add variants of $week, $year, $dayOfWeek that conform to the ISO-6801 spec
-
- Closed
-
- is related to
-
DRIVERS-297 Aggregation Framework Support for 3.4
-
- Closed
-
-
SERVER-11118 Add dateToString aggregation operator
-
- Closed
-
- links to