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

在Node.js中使用Mongoose获取MongoDB数据库及其集合

获取MongoDB所有数据库及其集合的简便方法

不需要分两次手动操作,可以通过MongoDB的原生命令或驱动代码一次性获取所有数据库及其集合,并生成你需要的JSON格式结构。

方法一:使用Mongo Shell(MongoDB Compass内置Shell也可用)

打开Mongo Shell(或在Compass的「Shell」标签页中),运行以下脚本即可直接生成目标格式的结果:

const dbCollectionsMap = {};
// 获取所有数据库列表
const allDatabases = db.adminCommand('listDatabases').databases;

// 遍历每个数据库,获取其集合列表
allDatabases.forEach(dbItem => {
  const dbName = dbItem.name;
  // 可选:跳过系统数据库(admin、local、config),如果需要包含可删除此判断
  if (['admin', 'local', 'config'].includes(dbName)) return;
  
  // 获取当前数据库的所有集合名称
  const collections = db.getSiblingDB(dbName)
    .listCollections()
    .toArray()
    .map(col => col.name);
  
  dbCollectionsMap[dbName] = collections;
});

// 打印格式化后的JSON结果
printjson(dbCollectionsMap);

运行后会直接输出符合你需求的JSON结构,你可以复制使用。

方法二:通过Node.js驱动代码实现

如果你需要在代码中自动生成该结构,可以使用MongoDB Node.js驱动编写如下代码:

const { MongoClient } = require('mongodb');

async function generateDbCollectionsMap() {
  // 替换为你的MongoDB连接字符串
  const connectionUri = 'mongodb://localhost:27017';
  const client = new MongoClient(connectionUri);

  try {
    await client.connect();
    const dbCollectionsMap = {};

    // 获取所有数据库
    const databases = await client.db().admin().listDatabases();
    
    for (const dbInfo of databases.databases) {
      const dbName = dbInfo.name;
      // 跳过系统数据库
      if (['admin', 'local', 'config'].includes(dbName)) continue;
      
      // 获取当前数据库的集合列表
      const collections = await client.db(dbName).listCollections().toArray();
      dbCollectionsMap[dbName] = collections.map(col => col.name);
    }

    // 输出格式化后的JSON
    console.log(JSON.stringify(dbCollectionsMap, null, 2));
  } finally {
    // 关闭连接
    await client.close();
  }
}

// 执行函数
generateDbCollectionsMap().catch(err => console.error(err));

补充说明

  • MongoDB Compass本身没有直接导出这种结构的功能,但通过其内置的Shell运行上述脚本即可快速得到结果。
  • 如果需要包含系统数据库,只需删除代码中判断跳过系统库的逻辑即可。

内容的提问来源于stack exchange,提问作者Gabriel Dufour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:05:09