-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework
-
Query Optimization
-
Fully Compatible
-
v4.2
-
Query 2019-06-03, Query 2019-06-17, Query 2019-07-01
-
(copied to CRM)
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", ...}} ]
- causes
-
SERVER-91102 Moving $match before $group is incorrect when predicate distinguishes equal values
- Closed