从mongo shell操作所有数据库

ede*_*ill 12 mongodb

我们有一个包含许多不同mongo数据库的系统.我经常想要编写适用于它们的所有(或子集)的即席查询,而不必事先知道哪些数据库存在.

我可以这样做show dbs,它会在视觉上打印一个列表,但有没有办法做类似的事情:

var db_list = listDatabases();

for (i = 0; i < db_list.length; i++) {
     do_something(db_list[i])
}
Run Code Online (Sandbox Code Playgroud)

我的问题show dbs是它没有捕获任何返回值,所以我不能用输出做任何有效的事情.

Joh*_*yHK 27

您可以使用'listDatabases'admin命令:

var db_list = db.adminCommand('listDatabases');
Run Code Online (Sandbox Code Playgroud)

返回一个如下所示的对象:

{
    "databases" : [
        {
            "name" : "test",
            "sizeOnDisk" : 2097152000,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 1,
            "empty" : true
        }
    ],
    "totalSize" : 8487174144,
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)