-
Type: Improvement
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Aggregation Framework
-
None
-
Fully Compatible
-
Query 12 (04/04/16), Query 13 (04/22/16)
When a $match contains an $in array with a single exact shard key match, the aggregation is not targetted to a single shard.
The listed repro produces the following output on 3.0.10:
$ mongo aggregation.js MongoDB shell version: 3.0.10 connecting to: test { "e1" : null } { "e2" : { "shardsPart" : [ { "$match" : { "a" : { "$in" : [ 1 ] } } } ], "mergerPart" : [ ] } }
And the following output on 3.2.4:
$ mongo aggregation.js MongoDB shell version: 3.2.4 connecting to: test { "e1" : null } { "e2" : { "shardsPart" : [ { "$match" : { "a" : { "$in" : [ 1 ] } } } ], "mergerPart" : [ ] } }
Notes:
- a find with / without the $in is correctly targetted to a single shard.
- I haven't tested multiple $in all targetted but it is likely that will also invoke a merge
- this issue is unrelated to
SERVER-18940as it is an exact shard key match. - This issue is an related but distinct from
SERVER-7656.
- duplicates
-
SERVER-18940 Optimise sharded aggregations that are targeted to a single shard
- Closed
-
SERVER-21065 Optimizer should consider predicate with "$in" operator having a single argument to be equivalent to the equality operator
- Closed
- is related to
-
SERVER-7656 Optimize aggregation on sharded setup if first stage is exact match on shard key
- Closed