如何获取MongoDB所有索引的使用情况和大小

6jjcrrmo  于 2023-01-12  发布在  Go
关注(0)|答案(1)|浏览(185)

我试图在同一个输出中获取MongoDB索引的使用情况和大小。
db.getCollection(collection).stats().indexSizes;给出了尺寸
db.getCollection(collection).aggregate({ "$indexStats": {} });仅给出用法。
是否有一个命令可以同时输出这两个命令?

cnwbcb6i

cnwbcb6i1#

这两个查询可以在intellishell上组合,因为它使用类似于javascript的语法我们可以运行下面的脚本。

db = db.getSiblingDB("your-db-name");
const collections = db.getCollectionNames();

const result = [];
for (const collection of collections) {
    const sizes = db.getCollection(collection).stats().indexSizes;
    const indexStats = db.getCollection(collection).aggregate({ "$indexStats": {} }).toArray();
    for (const index of indexStats) {
        index.collection = collection;
        index.size = sizes[index.name];
        result.push(index)
    }
}

print (result)

注意到到.toArray()的转换,以便容易地在其上循环。

相关问题