12

多くの異なるmongoデータベースを備えたシステムがあります。私は定期的に、どのデータベースが存在するかを事前に知らなくても、それらのすべて(またはサブセット)に適用されるアドホッククエリを作成したいと考えています。

リストを視覚的に印刷することはできますがshow dbs、次のようなことを行う方法はありますか?

var db_list = listDatabases();

for (i = 0; i < db_list.length; i++) {
     do_something(db_list[i])
}

私の問題show dbsは、戻り値をキャプチャしないため、出力で生産的なことを何もできないことです。

4

2 に答える 2

27

'listDatabases'そのためにadminコマンドを使用できます。

var db_list = db.adminCommand('listDatabases');

これにより、次のようなオブジェクトが返されます。

{
    "databases" : [
        {
            "name" : "test",
            "sizeOnDisk" : 2097152000,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 1,
            "empty" : true
        }
    ],
    "totalSize" : 8487174144,
    "ok" : 1
}
于 2012-10-16T14:14:07.873 に答える
1

getDBNames()もあります(JohnnyHKの答えがサイズを取得する方法が好きです。

d = db.getMongo().getDBNames()
[ "graylog2", "local", "admin", "test" ]

それから私はすることができます:

for (var x in d) { db = new Mongo().getDB(d[x]); print(db); y = print(db.getCollectionNames()); }
于 2015-10-01T13:32:36.677 に答える