13

我试图在以下位置找到这个问题的解决方案:http: //mongodb.github.io/node-mongodb-native/

但是,我找不到从 Node.js 应用程序中列出所有可用 MongoDB 数据库的解决方案。

4

4 回答 4

18

使用db.admin().listDatabases.

于 2013-05-15T17:25:39.840 回答
12

您现在可以使用 Node Mongo 驱动程序执行此操作(使用 3.5 测试)

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

const url = "mongodb://localhost:27017/";
const client = new MongoClient(url, { useUnifiedTopology: true }); // useUnifiedTopology removes a warning

// Connect
client
  .connect()
  .then(client =>
    client
      .db()
      .admin()
      .listDatabases() // Returns a promise that will resolve to the list of databases
  )
  .then(dbs => {
    console.log("Mongo databases", dbs);
  })
  .finally(() => client.close()); // Closing after getting the data
于 2020-03-05T13:10:58.583 回答
0

只有管​​理员可以查看所有数据库。因此,使用管理员凭据连接到 mongodb 数据库,然后创建一个管理员实例await db.admin(),然后列出所有数据库await adminDB.listDatabases()

const MongoClient = require('mongodb').MongoClient;
let client = await MongoClient.connect(process.env.MONGO_DB_URL);
const db = await client.db(process.env.DEFAULT_DB_NAME);
let adminDB = await db.admin();
console.log(await adminDB.listDatabases());
于 2021-09-23T13:43:02.733 回答
-1

*很难通过 db.admin().listDatabases 获取列表,下面的代码在 nodejs 中可以正常工作 *

const { promisify } = require('util');
const exec = promisify(require('child_process').exec)
async function test() {
  var res = await exec('mongo  --eval "db.adminCommand( { listDatabases: 1 }         
)" --quiet')
  return { res }
}

test()
  .then(resp => {
    console.log('All dbs', JSON.parse(resp.res.stdout).databases)
  })
test()
于 2019-05-14T10:44:41.120 回答