初心者向け必須MongoDB管理コマンド
MongoDBは、主要なNoSQLドキュメントデータベースであり、その柔軟性とスケーラビリティで知られています。開発者はCRUD(作成、読み取り、更新、削除)操作に焦点を当てることが多いですが、データベース環境の効果的な管理は、必須の管理コマンドの理解に大きく依存します。このガイドでは、データベース管理、ユーザー管理、システムヘルスチェックに必要なコアコマンドを初心者向けに紹介し、MongoDBインスタンスがスムーズかつ安全に実行されるようにします。
これらの管理タスクを習得することは、単純なローカル開発から本番環境に進む上で非常に重要です。mongoshシェルと対話してデータベース、コレクション、ユーザーを管理し、必要なシステム診断を実行する方法を探ります。
MongoDBシェル(mongosh)へのアクセス
管理コマンドを実行するための主要なインターフェースはMongoDBシェルであり、通常はmongoshコマンドを使用してアクセスします。ここでJavaScriptベースのコマンドをMongoDBインスタンスに対して直接実行します。
デフォルトポート(27017)で実行されているローカルMongoDBインスタンスに接続するには、次のように入力します。
mongosh
接続すると、>プロンプトが表示され、コマンドの発行準備ができたことを示します。
データベース管理コマンド
現在使用しているデータベースを管理し、既存のデータベースを表示することは、基本的な管理タスクです。
全データベースのリスト表示
MongoDBサーバーに現在存在するすべてのデータベースのリストを表示するには、show dbsコマンドを使用します。
> show dbs
admin 40.00 KiB
config 72.00 KiB
local 72.00 KiB
myAppDB 100.00 KiB
データベースの切り替え
データベースまたはコレクションを作成する前に、useコマンドを使用して目的のデータベースのコンテキストに切り替える必要があります。データベースが存在しない場合、MongoDBは最初のデータ挿入時に暗黙的に作成します。
> use myAppDB
switched to db myAppDB
現在のデータベースの表示
現在操作しているデータベースのコンテキストを確認するには、dbを使用します。
> db
myAppDB
データベースの削除
警告:このアクションは、指定されたデータベース内のすべてのデータを永久に削除します。特に本番環境では、細心の注意を払って使用してください。
現在のデータベース(dbによって返されるもの)を削除するには、次のようにします。
> db.dropDatabase()
{ "dropped" : "myAppDB", "ok" : 1 }
コレクション管理コマンド
コレクションはリレーショナルデータベースのテーブルに相当します。dbオブジェクトのショートハンドを使用して簡単に管理できます。
コレクションのリスト表示
特定のデータベースを使用している間、show collections(古いバージョンでは同等のdb.getCollectionNames())を使用して、その中のすべてのコレクションをリスト表示します。
> show collections
users
products
orders
コレクションの作成
コレクションは、最初の挿入時に自動的に作成されることがよくあります。ただし、検証ルールやキャッピングを制御するために、db.createCollection()を使用して明示的に作成することもできます。
// 標準コレクション「logs」を作成
> db.createCollection("logs")
{ "ok" : 1 }
コレクションの削除
コレクションを完全に削除するには、次のようにします。
> db.logs.drop()
true
ユーザーとセキュリティ管理
本番環境での使用を目的としたデータベースでは、ユーザー認証によるアクセス保護が必須です。ユーザー管理は通常、adminデータベース内、またはユーザーが権限を持つべき特定のデータベース内で行われます。
ユーザー作成のためのadminデータベースへの切り替え
管理ユーザーはadminデータベースに作成するのが標準的な慣行ですが、ロールベースのユーザーはアプリケーションデータベースに作成できます。
> use admin
switched to db admin
ユーザーの作成
新しいユーザーを追加するには、db.createUser()を使用します。これには、ユーザー名、安全なパスワード、および割り当てられたロールを指定する必要があります。
> db.createUser(
... {
... user: "appAdmin",
... pwd: passwordPrompt(), // パスワードを安全にプロンプト表示
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWrite" ]
... }
... )
- ヒント: スクリプトにプレーンテキストパスワードを埋め込むよりも、
passwordPrompt()の使用を強くお勧めします。
ユーザーのリスト表示
現在のデータベース内の既存のユーザーを表示するには、次のようにします。
> show users
システム監視と診断
管理者は、実行中のMongoDBインスタンスのヘルス、ステータス、および構成を確認する方法が必要です。
サーバー状態の確認
serverStatusコマンドは、メモリ使用量、接続数、操作数を含む、サーバーの操作に関する統計情報を詳述した包括的なドキュメントを返します。
> db.serverStatus()
// 出力は、メトリクスを含む大きなJSONドキュメントになります。
現在の接続の表示
アクティブなクライアント接続を表示するには、currentOpコマンドをクエリするか、serverStatusの出力の接続セクションを確認できます。現在の操作を直接表示する簡単な方法は次のとおりです。
> db.currentOp()
設定の確認
インスタンスに現在適用されている構成設定を表示するには、次のようにします。
> db.getMongo().getDB('admin').runCommand({ getParameter: 1, all: 1 })
まとめと次のステップ
データベースの切り替え、コレクション管理、ユーザー作成、基本的な監視をカバーするこれらの必須コマンドは、効果的なMongoDB管理の基盤を形成します。mongoshは即時のフィードバックを提供しますが、高度な監視には、MongoDB Compassとの統合や、視覚的な診断のためのMongoDB Atlasインターフェースの使用が必要になることがよくあります。
ベストプラクティス:常に資格情報で接続し、ユーザーロールを必要最小限の権限(最小権限の原則)に制限してください。
重要なデータストアを管理する前に、自信を築くために、非本番環境でこれらのコマンドを練習することから始めてください。