Script #83
mongodb
Performanceread-onlyMin Version: 3.2Find Unused Indexes in MongoDB ($indexStats)
Lists never-used indexes per collection. Offers cleanup candidates to cut write cost and memory use.
#indexStats#unused-index#cleanup
mongodb · javascript
const out = [];
db.getCollectionInfos({ type: "collection" }).forEach(c => {
db.getCollection(c.name).aggregate([{ $indexStats: {} }]).forEach(i => {
if (i.name !== "_id_" && i.accesses.ops === 0) {
out.push({ collection: c.name, index: i.name, key: JSON.stringify(i.key), since: i.accesses.since });
}
});
});
console.table(out);Operational Notes & Remediation Guidance
Indexes with low or zero access counts consume memory in WiredTiger cache and slow down write operations.
Production Safety & Execution Standards
- This script is designed for read-only diagnostics; it does not alter schema or modify data directly.
- Prior to executing on production systems under high load, verify the target database version (Min. Version: 3.2).
- Exercise caution with mutating actions (e.g., terminating sessions or dropping indexes) referenced in the notes section.
Other MONGODB Diagnostic Scripts
View All (100)#81Performance
Find Long-Running Operations in MongoDB (currentOp)
Lists active operations running longer than 5 seconds with plan summary and lock-wait info. Helps pick the operation to kill during a slowdown.
View Script
#82Storage
MongoDB Collection and Index Sizes
Ranks collections by document count, data, storage and index size. Used for capacity planning and spotting bloated indexes.
View Script
#84Replication
MongoDB Replica Set Lag and Oplog Window
Shows member state, lag behind the primary and the oplog window. Monitors replication health and resync risk.
View Script
#85Performance
Analyze Slow MongoDB Queries with the Profiler
Groups system.profile data to reveal the slowest query patterns and COLLSCANs. Ideal for finding missing indexes.
View Script