在nodejs中连接后如何获取mongodb数据库基本名称?

Zha*_* Yi 5 mongodb

我发现最新版本的 MongoDB nodejs 驱动程序引入了MongoClient类,这是建立连接后我可以获得的第一个类实例。但它不提供默认的数据库实例。下面是源代码。

MongoClient.connect(url, (err, client) => {
    if(err) {
      return null;
    }
    client.db('test');  // how can I know the database name? Do I need to parse the url?
  });
Run Code Online (Sandbox Code Playgroud)

上面的代码展示了如何在连接后获取 mongo 客户端实例。我需要调用client.db以获取数据库实例。我的问题是我如何知道client实例中的默认数据库名称。我得到的只是连接url。我是否需要解析连接 url 才能获取上例中的连接数据库test

我知道有一种方法可以db.getName()返回数据库名称。但是如何在db不解析 URL的情况下获取实例以从连接中获取数据库名称?

Mik*_*ant 5

在当前mongodb驱动程序中。类Db实例具有databaseName属性。因此获取已初始化的数据库名称MongoClient很简单

const db = mongoClient.db();
const dbName = db.databaseName;
Run Code Online (Sandbox Code Playgroud)

Nodejs 驱动程序 Db 文档


And*_*röm 2

从 MongoDB 4.4 开始,这似乎发生了变化。您可以通过databaseName属性访问当前数据库名称:

const client = await MongoClient.connect(DB_HOST, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});
db = client.db(DB_NAME);
console.log(db.databaseName);
Run Code Online (Sandbox Code Playgroud)