如何列出 mongo shell 中的所有数据库?

Posted

技术标签:

【中文标题】如何列出 mongo shell 中的所有数据库?【英文标题】:How to list all databases in the mongo shell? 【发布时间】:2014-11-14 21:00:46 【问题描述】:

我知道如何list all collections in a particular database,但是如何在 MongoDB shell 中列出所有可用的数据库?

【问题讨论】:

【参考方案1】:

在 mongoDB 控制台中列出所有数据库是使用命令show dbs

有关这方面的更多信息,请参阅可在 mongo shell 中使用的Mongo Shell Command Helpers。

【讨论】:

对于刚刚安装了 mongodb 并且对运行 db 显示当前数据库为 test 感到困惑的任何人(如我),但这未通过此页面上的任何命令列出这里解释***.com/q/38726310/73226 你到底是怎么去的:/ @JamieHutber 你可以通过在命令行上输入mongo 来获得shell(mongo --nodb 不连接到数据库) 是的,我必须来这里是为了像show dbs 这样简单的事情,因为当我去看文档时,我根本无法在任何地方找到show dbs 命令。 “文档”有时会让人非常沮丧。 该命令在--eval 中不起作用,只能在交互式外壳上运行。这个答案的选项确实有效(虽然输出格式不同)***.com/a/32192253/1837991【参考方案2】:

对于数据库列表:

show databases
show dbs

对于表/集合列表:

show collections
show tables
db.getCollectionNames()

【讨论】:

【参考方案3】:

对于 MongoDB shell 版本 3.0.5,在 shell 中插入以下命令:

db.adminCommand('listDatabases')

或者:

db.getMongo().getDBNames()

【讨论】:

如果你在你的 shell 中并且只想要名字:mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db)print(db))'hth【参考方案4】:

从命令行问题

mongo --quiet --eval  "printjson(db.adminCommand('listDatabases'))"

给出输出


    "databases" : [
        
            "name" : "admin",
            "sizeOnDisk" : 978944,
            "empty" : false
        ,
        
            "name" : "local",
            "sizeOnDisk" : 77824,
            "empty" : false
        ,
        
            "name" : "meteor",
            "sizeOnDisk" : 778240,
            "empty" : false
        
    ],
    "totalSize" : 1835008,
    "ok" : 1

【讨论】:

这里是自动化运行的最佳解决方案(无需先进入 mongo shell 模式)【参考方案5】:

在shell上列出mongodb数据库

 show databases     //Print a list of all available databases.
 show dbs   // Print a list of all databases on the server.

更多基本命令

use <db>    // Switch current database to <db>. The mongo shell variable db is set to the current database.
show collections    //Print a list of all collections for current database.
show users  //Print a list of users for current database.
show roles  //Print a list of all roles, both user-defined and built-in, for the current database.

【讨论】:

【参考方案6】:

有几个命令可以列出 MongoDB shell 中的所有数据库。

首先,使用 'mongo' 命令启动 Mongodb shell。

蒙哥

然后使用以下任一命令列出所有数据库。

显示数据库 显示数据库 db.adminCommand( listDatabases: 1 , nameOnly : true )

更多详情请查看here

谢谢。

【讨论】:

【参考方案7】:

我找到了一种解决方案,其中 admin()/others 不起作用。

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()

【讨论】:

以上是关于如何列出 mongo shell 中的所有数据库?的主要内容,如果未能解决你的问题,请参考以下文章

在 nodejs 脚本中列出 mongo 数据库中的所有集合

如何列出 MongoDB shell 中的所有集合?

如何列出 MongoDB shell 中的所有集合?

Mongo Shell 不会使用 find() 查询返回所有匹配的文档

如何在mongo shell中查看文档字段?

MongoDB学习第二篇 --- Mac下通过 Shell 执行 mongo 命令