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

【MongoDB】JavaScriptの配列ですべてのデータベース一覧を取得する方法

MongoDBのデータベース一覧をJavaScript配列として取得する方法

MongoDBに存在するすべてのデータベースをJavaScriptの配列として取得したい場合は、runCommand()メソッドを使うのが便利です。この記事では、listDatabasesコマンドを実行してデータベース情報を取得し、そこからデータベース名だけを抽出して配列に格納するまでの手順を、実際のコード例とともに解説します。

1. runCommand()でデータベース情報を取得する

まず、mongoシェルでuse adminを実行して管理用データベースに切り替え、その後にrunCommand()listDatabasesコマンドを実行します。

> use admin;
switched to db admin
> allDatabasesDetails = db.runCommand({listDatabases: 1});

このコマンドを実行すると、次のような結果が出力されます。各データベースの名前(name)、ディスク使用量(sizeOnDisk)、空かどうか(empty)といった詳細情報が確認できます。

{
    "databases" : [
        {
            "name" : "admin",
            "sizeOnDisk" : 847872,
            "empty" : false
        },
        {
            "name" : "config",
            "sizeOnDisk" : 98304,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 73728,
            "empty" : false
        },
        {
            "name" : "sample",
            "sizeOnDisk" : 1273856,
            "empty" : false
        },
        {
            "name" : "sampleDemo",
            "sizeOnDisk" : 352256,
            "empty" : false
        },
        {
            "name" : "studentSearch",
            "sizeOnDisk" : 262144,
            "empty" : false
        },
        {
            "name" : "test",
            "sizeOnDisk" : 9527296,
            "empty" : false
        }
    ],
    "totalSize" : 12435456,
    "ok" : 1
}

2. データベース名だけを配列に抽出する

取得した結果からデータベース名のみを抜き出して配列に格納するには、まず空の配列を用意し、for-inループとpush()を組み合わせて要素を追加していきます。

> allDatabaseName = []
[ ]
> for (var j in allDatabasesDetails.databases) {
...   allDatabaseName.push(allDatabasesDetails.databases[j].name)
... }

処理が完了したら、allDatabaseNameの中身を確認してみましょう。以下のように、すべてのデータベース名が配列として取得できています。

> allDatabaseName
[
    "admin",
    "config",
    "local",
    "sample",
    "sampleDemo",
    "studentSearch",
    "test"
]

なお、ループ実行時に「7」という数値が表示されることがあります。これはpush()メソッドが「要素追加後の配列の長さ」を戻り値として返すためで、7つのデータベースが配列に登録されたことを示しています。

まとめ

このように、db.runCommand({listDatabases: 1})でデータベース全体の情報を取得し、for-inループで必要なフィールドだけを抽出すれば、MongoDBのデータベース一覧を簡単にJavaScriptの配列として扱えます。スクリプト内での条件分岐や一括処理など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

  1. JavaScriptのArray.isArray()メソッドとは?オブジェクトが配列かどうかを判定する方法

    JavaScriptのArray.isArray()メソッドは、指定したオブジェクトが配列であるかどうかを判定するためのメソッドです。判定結果は真偽値として返され、配列であれば true、それ以外の場合は false を返します。typeof 演算子では配列も「object」と判定されてしまうため、正確に配列を見分けたい場面では Array.isArray() が最適な方法となります。基本構文Array.isArray(ob)引数の ob には、判定対象となるオブジェクトを指定します。サンプルコード①:ボタン操作で配列判定を行う <!DOCTYPE html> <html&g

  2. JavaScriptの配列flatMap()メソッドとは?構文と使い方をサンプルコードで解説

    JavaScriptのflatMap()メソッドは、配列の各要素に対してコールバック関数を実行し、その戻り値を1段階だけ平坦化(フラット化)して新しい配列として返します。map()で要素を変換してからflat()で浅く平坦化する処理と同等の動作を、1つのメソッドで簡潔に記述できるのが特徴です。 flatMap()メソッドの基本構文 array.flatMap(function callback(current_value, index, Array)) パラメータの説明 callback:新しい配列の要素を生成するために、各要素に対して呼び出される関数です。 current_value:現