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

我知道如何列出特定数据库中的所有集合,但我如何列出MongoDB shell中所有可用的数据库?

406606 次浏览

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

有关mongo shell命令的更多信息,请参阅Mongo Shell快速参考. shell命令。

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

db.adminCommand('listDatabases')

或者:

db.getMongo().getDBNames()

数据库列表:

show databases
show dbs

表格/收藏列表:

show collections
show tables
db.getCollectionNames()

从命令行问题

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 --quiet --eval  "printjson(db.adminCommand('listDatabases'))" | jq  '.databases[].name' | tr -d '"'

哪个给出下面列出所有数据库的输出

admin
local
meteor

在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.

我已经找到了一个解决方案,其中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()

有几个命令列出MongoDB shell中的所有dbs。

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

蒙戈

然后使用下列任意命令列出所有db。

  • show dbs
  • 显示数据库
  • db。adminCommand({listDatabases: 1, nameOnly: true})

 a snap shot

更多详情请查看在这里

谢谢你!

根据MongoDB官方文档,对于MongoDB 4+,只能通过对管理数据库运行db.adminCommand( { listDatabases: 1, , nameOnly: true } )来列出数据库名称。

如果您正在使用MongoDB Cloud,您需要首先连接到您的MongoDB部署。在这种情况下,你可以在你的终端上运行这个命令mongosh "mongodb+srv://cluster0.<your-connection-string>.mongodb.net" --apiVersion 1 --username <your-user-name>

Atlas atlas-xxxxxx-shard-0 [primary] test> db.adminCommand({listDatabases:1 , nameOnly: true})
{
databases: [
{ name: 'sample_airbnb' },
{ name: 'sample_analytics' },
{ name: 'sample_geospatial' },
{ name: 'sample_guides' },
{ name: 'sample_mflix' },
{ name: 'sample_restaurants' },
{ name: 'sample_supplies' },
{ name: 'sample_training' },
{ name: 'sample_weatherdata' },
{ name: 'admin' },
{ name: 'local' }
],
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: xxxxxxxxxx, i: 1 }),
signature: {
hash: Binary(Buffer.from("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "hex"), 0),
keyId: Long("xxxxxxxxxxxxx")
}
},
operationTime: Timestamp({ t: xxxxxxxxxx, i: 1 })
}