MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBのすべてのデータベースを反復処理する方法

MongoDBのすべてのデータベースを反復処理するには?

MongoDBでサーバー上に存在するすべてのデータベースを反復処理(列挙)したい場合、まず管理用の「admin」データベースへ切り替える必要があります。adminデータベースはサーバー全体の情報を管理しているため、ここに対してlistDatabasesコマンドを実行することで、全データベースの一覧とサイズなどの詳細情報を取得できます。

ステップ1:adminデータベースへの切り替え

現在接続しているデータベースからadminデータベースに移動するには、db.getSiblingDB()メソッドを使用します。以下がそのクエリです。

> switchDatabaseAdmin = db.getSiblingDB("admin");
admin

これで、以降のコマンドはadminデータベースに対して実行されるようになります。

ステップ2:listDatabasesコマンドで全データベースの情報を取得

次に、runCommand()メソッドを使って「listDatabases」コマンドを実行し、戻り値のdatabasesフィールドから各データベースの情報を取得します。

> allDatabaseName = switchDatabaseAdmin.runCommand({ "listDatabases": 1 }).databases;

実行結果

上記のクエリを実行すると、以下のようにサーバー内の全データベースの名前・ディスク使用量・空かどうかの情報が配列形式で返されます。

[
    {
        "name" : "admin",
        "sizeOnDisk" : 495616,
        "empty" : false
    },
    {
        "name" : "config",
        "sizeOnDisk" : 98304,
        "empty" : false
    },
    {
        "name" : "local",
        "sizeOnDisk" : 73728,
        "empty" : false
    },
    {
        "name" : "sample",
        "sizeOnDisk" : 1335296,
        "empty" : false
    },
    {
        "name" : "sampleDemo",
        "sizeOnDisk" : 278528,
        "empty" : false
    },
    {
        "name" : "studentSearch",
        "sizeOnDisk" : 262144,
        "empty" : false
    },
    {
        "name" : "test",
        "sizeOnDisk" : 8724480,
        "empty" : false
    }
]

取得したデータベース一覧を反復処理するには

返された配列はJavaScriptの配列なので、forEach()などを使えば各データベースに対して任意の処理を適用できます。例えば、データベース名だけを順番に出力する場合は次のように記述します。

> allDatabaseName.forEach(function(dbInfo) {
...     print(dbInfo.name);
... });

このように、adminデータベース経由でlistDatabasesコマンドを実行すれば、MongoDBサーバー上の全データベースを簡単に反復処理できます。バックアップスクリプトや統計情報の収集など、運用作業でもよく使われるテクニックなので、ぜひ覚えておきましょう。

  1. Mongoシェルですべてのデータベースを一覧表示するには?

    Mongoシェルでデータベースの一覧を表示する方法Mongoシェルですべてのデータベースを一覧表示するには、showコマンドを使用します。基本的な構文は以下のとおりです。show dbs;実際にMongoDBでこのコマンドを実行してみましょう。クエリは次のように入力します。> show dbs;実行結果の例admin 0.000GB config 0.000GB local 0.000GB sample 0.000GB sampleDemo 0.000GB test 0.003GB新しく作成したデータベースが表示されない理由ここで注意すべき点があります。MongoDBで新しいデータベース

  2. MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方

    MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、