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

MongoDBサーバー上のデータベースとコレクションの一覧を取得する方法

はじめに

MongoDBサーバーを運用していると、サーバー上にどのようなデータベースが存在するのか、また特定のデータベースにどのようなコレクションが含まれているのかを確認したい場面がよくあります。この記事では、MongoDBシェル(mongosh)を使ってこれらの一覧を取得する方法を、実際の実行例とともに解説します。

すべてのデータベースの一覧を取得する

サーバー上に存在するすべてのデータベースの一覧を取得するには、まずadminデータベースに切り替え、その後listDatabasesコマンドを実行します。基本構文は以下のとおりです。

use admin

db.runCommand({listDatabases: 1});

特定のデータベースのコレクション一覧を取得する

特定のデータベースに含まれるすべてのコレクション名を取得するには、対象のデータベースに切り替えてからgetCollectionNames()メソッドを呼び出します。構文は次のようになります。

use yourDatabaseName;

db.getCollectionNames();

ケース1:データベースの一覧を取得する

それでは、実際に上記のコマンドを実行して動作を確認してみましょう。まずはサーバー上のデータベース一覧を取得します。

> use admin
switched to db admin

> db.runCommand({listDatabases: 1});

このコマンドを実行すると、各データベースの名前(name)、ディスク上のサイズ(sizeOnDisk)、空かどうか(empty)といった情報とともに、合計サイズ(totalSize)も返されます。

{
    "databases" : [
        {
            "name" : "admin",
            "sizeOnDisk" : 1675264,
            "empty" : false
        },
        {
            "name" : "config",
            "sizeOnDisk" : 131072,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 77824,
            "empty" : false
        },
        {
            "name" : "main",
            "sizeOnDisk" : 184320,
            "empty" : false
        },
        {
            "name" : "my",
            "sizeOnDisk" : 753664,
            "empty" : false
        },
        {
            "name" : "sample",
            "sizeOnDisk" : 1286144,
            "empty" : false
        },
        {
            "name" : "sampleDemo",
            "sizeOnDisk" : 352256,
            "empty" : false
        },
        {
            "name" : "studentSearch",
            "sizeOnDisk" : 262144,
            "empty" : false
        },
        {
            "name" : "test",
            "sizeOnDisk" : 15810560,
            "empty" : false
        },
        {
            "name" : "university",
            "sizeOnDisk" : 229376,
            "empty" : false
        },
        {
            "name" : "web",
            "sizeOnDisk" : 217088,
            "empty" : false
        }
    ],
    "totalSize" : 20979712,
    "ok" : 1
}

このように、listDatabasesコマンドを使えば、adminやlocalなどのシステム用データベースを含む、サーバー上の全データベース情報を一度に確認できます。

ケース2:コレクションの一覧を取得する

次に、データベース「sample」に含まれるコレクションの一覧を取得してみます。まず対象のデータベースに切り替えます。

> use sample;
switched to db sample

> db.getCollectionNames();

実行すると、そのデータベース内の全コレクション名が配列形式で返されます。

[
    "arraySizeErrorDemo",
    "basicInformationDemo",
    "copyThisCollectionToSampleDatabaseDemo",
    "documentWithAParticularFieldValueDemo",
    "employee",
    "findListOfIdsDemo",
    "findMimimumElementInArrayDemo",
    "findSubstring",
    "getAllRecordsFromSourceCollectionDemo",
    "getElementWithMaxIdDemo",
    "insertDocumentWithDateDemo",
    "internalArraySizeDemo",
    "largestDocumentDemo",
    "makingStudentInformationClone",
    "nestedArrayDemo",
    "oppositeAddToSetDemo",
    "prettyDemo",
    "returnOnlyUniqueValuesDemo",
    "selectItemDemo",
    "selectWhereInDemo",
    "sourceCollection",
    "specificFieldDemo",
    "studentInformation",
    "sumOfValueDemo",
    "sumTwoFieldsDemo",
    "truncateDemo",
    "updateFieldIfValueIsGreaterDemo",
    "updateInformation",
    "userInformation"
]

まとめ

データベースの一覧を取得するには、adminデータベースに切り替えてdb.runCommand({listDatabases: 1})を実行し、コレクションの一覧を取得するには、対象のデータベースに切り替えてdb.getCollectionNames()を使用します。これらのコマンドを使いこなせるようになると、MongoDBサーバーの全体構成や各データベースの中身を素早く把握できるようになり、日々の運用やデバッグ作業が格段に効率化されます。

  1. JavaでMongoDBの全データベース一覧を取得する方法

    MongoDBでは、シェル上で show dbs コマンドを実行するだけで、サーバー内に存在するデータベースの一覧を簡単に確認できます。> show dbs admin config local myDatabase sampleDatabase students test testDBJavaアプリケーションからMongoDBに接続し、すべてのデータベース名を取得したい場合は、listDatabaseNames() メソッドを使用します。このメソッドは MongoIterable<String> 型のオブジェクトを返すため、拡張for文を使って各データベース名を1つずつ取り

  2. ローカルにインストールされたPythonモジュールの一覧を取得する方法

    ローカル環境にインストールされたPythonモジュールの一覧を取得する方法はいくつかあります。ここでは、代表的な3つの方法をわかりやすく紹介します。 1. Pythonシェルでhelp()関数を使う 最も手軽なのは、Pythonインタラクティブシェルからhelp()関数を利用する方法です。以下のように実行します。 >>> help(modules) Please wait a moment while I gather a list of all available modules... BaseHTTPServer brain_nose