Uploaded image for project: 'Documentation'
  1. Documentation
  2. DOCS-9548

Docs for SERVER-7695: Add variants of $week, $year, $dayOfWeek that conform to the ISO-6801 spec

    XMLWordPrintable

Details

    • Task
    • Status: Closed
    • Major - P3
    • Resolution: Duplicate
    • None
    • None
    • None
    • true

    Description

      Engineering Ticket 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

              Unassigned Unassigned
              emily.hall Emily Hall
              Kay Kim Kay Kim (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                4 years, 51 weeks, 1 day ago