-
Type:
Improvement
-
Resolution: Done
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Optimization
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Inequalities always appear to be estimated as if all documents match.
To reproduce:
db.foo.drop(); docs = []; for (let i = 1; i <= 100000; i++) { docs.push({a:i % 2}); } db.foo.insertMany(docs); db.foo.createIndex({a:1}); db.foo.find({"a":{"$ne":1}}).count(); db.foo.find({"a":{"$ne":1}}).explain().queryPlanner.winningPlan.cardinalityEstimate;
returns:
Enterprise test> db.foo.find({"a":{"$ne":1}}).count(); 50000 Enterprise test> db.foo.find({"a":{"$ne":1}}).explain().queryPlanner.winningPlan.cardinalityEstimate; 100000