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

MongoDB Node.js驱动v3.1.10获取集合名报错,求文档及正确查询方式

问题解答

一、MongoDB Node.js驱动的文档参考

你安装的mongodb@3.1.10驱动包本身就带有完整的文档,直接查看本地node_modules/mongodb/docs/目录下的文件就能找到API说明和示例,另外驱动根目录的README.md里也有快速入门的代码示例,足够解决基础操作问题。

二、正确获取集合名称的方式

你遇到的错误本质是数据库还没建立连接就调用了listCollections方法,此时serverConfig还未初始化,导致capabilities()返回null触发报错。下面给出两种可行的写法:

1. 基于你当前使用的Db和Server旧API

需要先调用db.open()完成连接,再执行集合查询:

const Db = require('mongodb').Db
const Server = require('mongodb').Server

const dbName = '你的数据库名';
const host = 'localhost';
const port = 27017;
const options = {};

const db = new Db(dbName, new Server(host, port, options), {});

// 先建立数据库连接
db.open((connectErr, dbInstance) => {
  if (connectErr) {
    console.error('数据库连接失败:', connectErr);
    return;
  }

  // 连接成功后再获取集合列表
  dbInstance.listCollections().toArray((listErr, collections) => {
    if (listErr) {
      console.error('获取集合列表失败:', listErr);
    } else {
      // 提取集合名称(返回的结果是包含集合详情的对象数组)
      const collectionNames = collections.map(item => item.name);
      console.log('所有集合名称:', JSON.stringify(collectionNames));
    }

    // 操作完成后关闭连接
    dbInstance.close();
  });
});

2. 推荐使用更现代的MongoClientAPI(旧API已被标记为废弃)

这是驱动3.x版本推荐的连接方式,代码更简洁:

const MongoClient = require('mongodb').MongoClient;

const uri = `mongodb://localhost:27017/${dbName}`;
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

client.connect(connectErr => {
  if (connectErr) {
    console.error('连接失败:', connectErr);
    return;
  }

  const db = client.db(dbName);
  db.listCollections().toArray((listErr, collections) => {
    if (listErr) {
      console.error('获取集合失败:', listErr);
    } else {
      const collectionNames = collections.map(item => item.name);
      console.log('所有集合名称:', JSON.stringify(collectionNames));
    }
    // 关闭客户端连接
    client.close();
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:31:37