Loading...
Loading...
Hiding an index can result in cached plans no longer being accessible via the $planCacheStats pipeline stage. db.foo.drop(); db.foo.insert({ a: 1, b: 1 }); db.foo.createIndex({ a: 1 }); db.foo.createIndex({ a: 1, b: 1 }) var q = { a: { $gte: 1 }, b: 1 }; db.foo.count(q); var key = db.foo.explain().count(q).queryPlanner.planCacheKey; //=> E7DCAC4F db.foo.aggregate([{ $planCacheStats: {} }, { $match: { planCacheKey: key } }, {$project: { plan: "$cachedPlan.indexName" } } ]) //=> { "plan" : "a_1_b_1" } db.foo.hideIndex({ a: 1 }) db.foo.count(q); var key2 = db.foo.explain().count(q).queryPlanner.planCacheKey; //=> E7DCAC4F db.foo.aggregate([{ $planCacheStats: {} }, { $match: { planCacheKey: key2 } }, {$project: { plan: "$cachedPlan.indexName" } } ]) //=> no results db.foo.unhideIndex({ a: 1 }) db.foo.count(q); var key3 = db.foo.explain().count(q).queryPlanner.planCacheKey; //=> E7DCAC4F db.foo.aggregate([{ $planCacheStats: {} }, { $match: { planCacheKey: key3 } }, {$project: { plan: "$cachedPlan.indexName" } } ]) //=> { "plan" : "a_1_b_1" }
alex.bevilacqua commented on Wed, 7 Jul 2021 16:39:25 +0000: This is technically "as designed" as single solution query plans aren't cached. Flagging this as duplicate and leaving it here in case it helps other discover SERVER-13341.
Click on a version to see all relevant bugs
MongoDB Integration
Learn more about where this data comes from
Bug Scrub Advisor
Streamline upgrades with automated vendor bug scrubs
BugZero Enterprise
Wish you caught this bug sooner? Get proactive today.