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サーバー上の全データベースを簡単に反復処理できます。バックアップスクリプトや統計情報の収集など、運用作業でもよく使われるテクニックなので、ぜひ覚えておきましょう。
-
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で新しいデータベース
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、