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

Move $match in front of $group if condition is on group key

    • Query Optimization
    • Fully Compatible
    • v4.2
    • Query 2019-06-03, Query 2019-06-17, Query 2019-07-01

      In case of views created on results of a $group, if the subsequent query is filtering on _id field then it should be possible to push that $match in front of $group transforming it into filter against whatever field is being grouped.

      Example:

      Vew definition:

      [ {$group:{_id:"$city", ...}} ] 
      

      Query on view:

      {$match: {_id:{$in:["NY", "SF"]}}}
      

      Pipeline transformation:

      // from
      [ {$group:{_id:"$city", ...}}, {$match: {_id:{$in:["NY", "SF"]}}} ] 
      // to
      [{$match: {city:{$in:["NY", "SF"]}}}, {$group:{_id:"$city", ...}} ] 
      

            Assignee:
            backlog-query-optimization [DO NOT USE] Backlog - Query Optimization
            Reporter:
            asya.kamsky@mongodb.com Asya Kamsky
            Votes:
            0 Vote for this issue
            Watchers:
            16 Start watching this issue

              Created:
              Updated:
              Resolved: