You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中实现GET请求查询MongoDB集合占用的存储空间字节数

操作步骤

第一步:MongoDB集合存储空间查询逻辑

查询集合实际占用存储空间使用MongoDB内置的collStats数据库命令即可,返回结果中几个关键字段说明:

  • size:集合内所有未压缩的文档数据总字节数,不包含索引、预分配的空闲空间
  • storageSize:集合本身实际占用的磁盘存储空间字节数,包含预分配空间、文档压缩开销,不包含索引占用空间
  • totalSize:集合+所有关联索引的总磁盘占用字节数,MongoDB 4.4及以上版本支持,可直接取该字段作为集合整体存储占用结果

第二步:Node.js GET接口实现

依赖安装

执行命令安装所需依赖:
npm install express mongodb

完整代码示例

const express = require('express');
const { MongoClient } = require('mongodb');
const app = express();
const PORT = 3000;

// MongoDB连接配置,替换为你实际的连接信息
const MONGODB_URI = 'mongodb://用户名:密码@127.0.0.1:27017';
const DB_NAME = '目标数据库名';
const TARGET_COLLECTION = '要查询的集合名';

let dbInstance = null;
// 初始化MongoDB连接
async function initMongoConnect() {
  const client = await MongoClient.connect(MONGODB_URI);
  dbInstance = client.db(DB_NAME);
  console.log('MongoDB连接成功');
}

// 集合存储空间查询GET接口
app.get('/api/collection-storage', async (req, res) => {
  try {
    if (!dbInstance) {
      return res.status(500).json({ code: 500, msg: '数据库未就绪' });
    }
    // 调用collStats命令获取统计信息
    const collectionStats = await dbInstance.command({ collStats: TARGET_COLLECTION });
    res.json({
      code: 200,
      data: {
        collectionName: TARGET_COLLECTION,
        totalStorageByte: collectionStats.totalSize, // 含索引的总磁盘占用
        onlyCollectionByte: collectionStats.storageSize, // 仅集合本身磁盘占用
        totalIndexByte: collectionStats.totalIndexSize // 索引总磁盘占用
      }
    });
  } catch (err) {
    res.status(500).json({ code: 500, msg: '查询失败', error: err.message });
  }
});

// 启动服务
initMongoConnect().then(() => {
  app.listen(PORT, () => {
    console.log(`服务已启动,端口:${PORT}`);
  });
});

注意事项

  • 所用的MongoDB账号需要拥有collStats权限,否则会返回权限错误
  • 如果你使用Mongoose作为ODM,可直接通过mongoose.connection.db.command({ collStats: '目标集合名' })调用统计命令,逻辑和上述示例一致
  • 分片集群场景下返回的统计值为所有分片对应存储空间的总和

内容的提问来源于stack exchange,提问作者Ionut Popa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:21:01