トップMongoDBコマンドを知っておくべき

トップMongoDBコマンドを知っておくべき

  • オーケストレーション
6分で読めます 更新日 Jan 4, 2021

ポイント: データベース管理のための基本的なMongoDBコマンドが概説されており、接続、ユーザー管理、ログ確認に焦点を当てています。ユーザーの作成、更新、削除、およびコレクションやデータベースの管理に関する実用的なコマンド例が提供されています。

  • MongoDBは、ドキュメントとコレクションを使用して動作し、高いパフォーマンスを確保します。
  • 主要なコマンドには、ユーザー管理、データベース統計、およびコレクションの詳細が含まれます。

この記事では、MongoDBデータベース管理に最も便利なコマンドについて説明します。

まず、MongoDBの基本概念に慣れましょう。それから、さまざまな基本的な管理機能を実行する方法をコマンドとともに示します:

始めましょう!

MongoDBの概要

MongoDBは高性能で高スケーラビリティのクロスプラットフォームNoSQLデータベースです。MongoDBはドキュメント、コレクション、データベースのような概念に依存しています:

  • コレクションとドキュメントは、RDBMSデータベースの従来のテーブルと行に類似しています。
  • 単一のMongoDBインスタンスには複数のデータベースを含むことができます。データベースはコレクションの物理コンテナで、システム内に専用のファイル構造があります。

コレクションはMongoDBドキュメントのグループを含みます。コレクションはデータベース内に作成され、従来のデータベースのようにスキーマを強制しません。したがって、同じコレクション内の異なるドキュメントは異なるフィールドを持つことができます。MongoDBドキュメントはキーと値のペアに基づいています。

従来のRDBMS用語がMongoDB構造にどのように関連しているかを簡単に見てみましょう。

ログの確認

コレクションの名前の変更

リレーショナルデータベース管理システム MongoDB
データベース データベース
テーブル コレクション
行 BSONドキュメント
列 BSONフィールド
インデックス インデックス
主キー _idフィールド(主キー)MongoDBはデフォルトで各ドキュメントに12バイトの16進数の番号を自動生成します。
グループ 集約
結合 埋め込みとリンク

他のデータベースと同様に、MongoDBは管理が必要です。そこで管理コマンドが登場します。見てみましょう。

MongoDBへの接続コマンド

まず、MongoDBデータベースに接続する方法を知る必要があります。mongoコマンドを使用してMongoDBデータベースに接続し、必要に応じてホストやポートのようなパラメータを使用できます。

  • mongo このコマンドをローカルホストシェルで実行して、デフォルトのポート27017でローカルデータベースに接続します。
  • mongo <host>/<database> 特定のデータベースに接続するためにホストとデータベースをパラメータとして指定します。
  • mongo –host <hostname/IP> –port <port no> [options] データベースに接続する際に異なるオプションを指定するためにこの形式を使用できます。利用可能なすべてのオプションに関する詳細情報はmongoのマニュアルページやヘルプを参照してください。

mongo –host <hostname/IP> –port <port no> --authenticationDatabase <database> -u <user> -p <password>

ヘルプ

    mongo --host 10.10.10.59 --port 27017 --verbose

MongoDBインストールで認証が有効になっている場合、ユーザーの詳細と認証データベースを指定できます。認証データベースは、ユーザー詳細が存在する場所であり、ユーザーを作成するために使用される任意のデータベースです。コマンドでパスワードを指定しない場合、cmdは後でそれを求めます。

    mongo --port 27017 --authenticationDatabase "admin" -u "barryadmin" -p

MongoDB表示コマンド

MongoDBデータベースのオブジェクトを表示する方法を見てみましょう。showコマンドを使用して、既存のデータベース、コレクション、ロール、ユーザーを取得できます。

すべてのデータベースを表示

    show dbs

データベース内のコレクションを表示

    show collections / db.getCollectionNames()

データベース内のロールを表示

    show roles

データベース内のユーザーを表示

    show users / db.getUsers()

ユーザー管理コマンド

最も重要な管理タスクの1つは、ユーザーの権限を管理することです。MongoDBは、ユーザーとロールを使用してこの機能を提供し、簡単なアクセス制御のための組み込みロールを持っています。

アクセス制御機能を使用するには、MongoDBの設定ファイルで「authentication」オプションを有効にする必要があります。mongod.confファイルに以下の行を追加し、変更を反映させるためにMongoDBサービスを再起動します。

/etc/mongod.conf

    security:
authorization: "enabled"

ユーザーを作成

createUserコマンドを使用すると、ユーザーを作成できます。車両データベース用に、読み取りおよび書き込み権限のみを持つユーザーを作成しましょう。

構文:

例:

結果:

    db.createUser(
{
user: ,
pwd: ,
roles: [
{role: , db: }
]
}
)

例:

    use vehicles
db.createUser(
{
user: "barryvehicles",
pwd: passwordPrompt(),
roles: [
{role: 'readWrite', db: "vehicles"}
]
}
)

結果:

passwordPromt()関数は、createUserコマンドを実行する際にパスワードを求めます。このユーザーは「vehicles」データベースに作成されます。

したがって、このユーザーで認証を行う際には、「vehicles」データベースを「authenticationDatabase」として指定する必要があります。データベースユーザーは、他のデータベースの権限を定義する際に、任意のデータベースに作成できます。

結果:

    mongo --port 27017 --authenticationDatabase "vehicles" -u "barryvehicles" -p

結果:

ユーザー詳細の更新

ユーザーの詳細は、 updateUser()コマンドを使用して更新できます。ユーザーロールを更新する際には、すべての希望するロールを指定する必要があります。なぜなら、updateUser()は既存のルールを上書きするからです。

この例では、「barryvehicles」ユーザーをカスタムフィールドで更新し、adminデータベースに対する読み取り権限を与えます。「customData」セクションでは、任意のカスタムキーのペアを作成できます。これはユーザーロールには影響を与えず、カスタムフィールドはユーザーに追加の詳細を加えるための情報セクションと見なすことができます。

構文:

例:

結果:

    db.updateUser(
<"username">,
{
customData : {  },
roles: [
{role: , db: }
]
}
)

例:

    db.updateUser(
"barryvehicles",
{
customData : { usertype: 'dbadmin' },
roles: [
{role: 'readWrite', db: "vehicles"},
{role: 'read', db: "admin"}
]
}
)

結果:

ユーザーの削除

ユーザーはdropUser()コマンドを使用して削除できます。次の例では、「barryvehicles」ユーザーを削除します。

構文:

例:

結果:

    db.dropUser()

例:

    >db.dropUser("barryvehicles")

結果:

MongoDBのログを確認するための2つの方法があります。私たちは:

  • mongodログファイルを確認する
  • getLog()コマンドを使用する

getLog()は、最近のログイベントを返します。このコマンドはRAMキャッシュ内の最近の1024 MongoDBログイベントを読み取ります。MongoDBの以前のバージョンでは、ログはプレーンテキスト形式で返されました。しかし、MongoDB 4.4では、ログはExtended JSON v2.0でフォーマットされています。

構文:

    db.adminCommand( { getLog:  } )

getLog()コマンドには3つの可能な値があります。それらは

    • * getLog()コマンドの使用可能な値のリストを返します。
    • global 最近のすべてのログエントリを返します。
    • startupWarnings 現在のプロセスが開始されてからのエラーまたは警告を含む可能性のあるログエントリを返します。

例:

結果:

    db.adminCommand( { getLog: "*" } )
db.adminCommand( { getLog : "global" } )

結果:

データベース管理コマンド

このセクションでは、基本的なデータベース管理コマンドをカバーします。これにより、サーバーの統計、コレクションの統計、コレクションのサイズなどを把握できます。

helpは、管理者のツールボックスにおいて必須のコマンドです。helpコマンドは、MongoDBで利用可能なヘルプオプションのリストを提供します。

通常のヘルプ:

結果:

    help

結果:

ここでは、MongoDBで利用可能なすべてのヘルプオプションを確認できます。データベースで作業するために必要なすべてのヘルプコマンドを取得するには、db.help()コマンドを実行してください。

結果:

    db.help()

結果:

データベースの詳細を取得

stats()コマンドは、データベースの統計情報を提供します。提供される情報は、コレクション数やオブジェクト(ドキュメント)の数、データベースサイズからインデックスまでの範囲です。

scaleFactorは、データサイズがどのように表現されるかを反映します。デフォルトのscaleFactorは1に設定されており、バイト単位でデータを表示します。たとえば、scaleFactorを1024に変更すると、サイズをキロバイト単位で表示できます。

結果:

    db.stats()

結果:

サーバーの詳細を取得するには、db.serverStats()コマンドを使用します。

結果:

    db.serverStats()

結果:

接続名のリストを取得するには、getCollectionNames() コマンドを使用します。

結果:

    db.getCollectionNames()

結果:

コレクションの詳細を取得および返却

コレクションの統計を取得

status()関数は、コレクションの包括的な概要を提供します。

結果:

    db.vehicledetails.stats()

結果:

コレクションのレイテンシを取得

latencyStatus()コマンドを使用して、読み取りおよび書き込み操作の平均レイテンシと、読み取りおよび書き込み操作の数を取得します。

結果:

    db.vehicledetails.latencyStats()

結果:

コレクションのサイズを取得

以下のコマンドは、さまざまな方法でコレクションのサイズを調べるために使用されます:

  • dataSize()は、コレクション内のデータのサイズを表示します。
  • storageSize() は、コレクション内のドキュメントに割り当てられたストレージの合計量を示します。
  • totalSize()は、ドキュメントとインデックスを含むコレクションの合計サイズを示します。
  • totalIndexSize()は、コレクションのインデックス化されたサイズを提供します。

結果:

    db.vehicledetails.dataSize()
db.vehicledetails.storageSize()
db.vehicledetails.totalSize()
db.vehicledetails.totalIndexSize()

結果:

「vehicledetails」は小さなコレクションであるため、storageSizeはtotalIndexSizeと等しく、インデックス化されたデータはコレクション内の生データと等しく、さらなる圧縮は不可能です。

既存のコレクションの名前を変更するには、renameCollection関数を使用します。(この関数はシャーディングされたコレクションには対応していません。)

コレクションの名前を変更する際には、ソースネームスペースと宛先ネームスペースを正しく指定する必要があります。MongoDBでは、ネームスペースはデータベースオブジェクトを特定するための一意の名前に関連しています。

以下の例では、車両データベース内の「vehicledetails」コレクションの名前を変更しています。古いコレクションと新しいコレクションを区別するために、ネームスペースを.として定義しています。

結果:

サーバーを終了する

MongoDBインスタンスを完全に終了したい場合は、組み込みのshutdownServer()コマンドを使用できます。shutdownServer()は、MongoDBプロセスを終了する前にデータベースによって使用されるすべてのリソースをクリーンアップします。

コマンドは、実行するために管理データベースに対して発行する必要があります。これを実現するために、getSiblingDB関数を使用して管理データベースを示します。

構文:

forceオプションは、シャットダウン操作を強制し、進行中の操作を中断してMongoDBインスタンスを終了します。timeoutSecオプションは、シャットダウンが発生する前の時間を秒単位で設定するために使用できます。認証された環境では、ユーザーはこのコマンドを実行するためにシャットダウン権限を持っている必要があります。

次の例では、10秒以内にMongoDBインスタンスを強制終了します。getSiblingDB関数は、シャットダウン関数を管理データベースに指し示すことを可能にします。

結果:

これでMongoDBコマンドのチュートリアルが終了します。上記のすべてのコマンドは、公式のMongoDBドキュメントを使用してさらに調査できます。

関連読書

MongoDBガイド

  1. MongoDB概要:MongoDBの使い方
  2. UbuntuとMacにMongoDBをインストールする方法
  3. MongoDBでデータベースを作成する
  4. MongoDBシェル基本コマンド
  5. MongoDB Compass:Mongo GUIの使用
  6. MongoDBのロールベースアクセス制御(RBAC)について
  7. MongoDBのプロジェクションとプロジェクションオペレーターについて
  8. MongoDBの集約関数について
  9. MongoDBのソート:sort()メソッドと例
  10. MongoDBでプッシュとプルオペレーターを使用する
  11. MongoDB $unwindの使い方
  12. 23の一般的なMongoDBクエリオペレーターとその使い方
  13. MongoDBのジオロケーションクエリの例
  14. MongoDBトランザクションの紹介
  15. MongoDBインデックス:主要なインデックスタイプとその管理方法
  16. トップMongoDBコマンドを知っておくべき
  17. MongoDBレプリケーション:完全な紹介
  18. MongoDBクラスタを設定する方法
  19. MongoDBシャーディング:概念、例、チュートリアル
  20. MongoDB Atlas:マネージドMongoDBの設定と使用
  21. MongoDBをDockerコンテナとして実行する方法
  22. MongoDBのメモリ使用量、管理、要件
  23. MongoDBバックアップ用のmongodumpの使い方
  24. MongoDBバックアップを復元するためのmongorestoreの例
  25. PyMongoの使い方
  26. MongoDBとNodeJSのためのMongooseの使い方
  27. MongoDBチートシート
  28. MongoDB対Cassandra:NoSQLデータベースの比較
  29. PostgreSQL対MongoDB:データベースの比較
  30. MySQL対MongoDB:データベースの比較
  31. MongoDB認定:紹介

これらの投稿は私自身のものであり、BMCの立場、戦略、または意見を必ずしも表すものではありません。

オーケストレーションの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。