如何列出 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 数据库中的所有集合