Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-7695

Add variants of $week, $year, $dayOfWeek that conform to the ISO-6801 spec

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: 2.1.2, 2.2.0, 2.2.1
    • Fix Version/s: 3.3.4
    • Component/s: Aggregation Framework
    • Labels:

      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

      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

            Activity

              People

              • Votes:
                12 Vote for this issue
                Watchers:
                18 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: