【MongoDBの基本コマンド】WindowsでMongndoDBのシェルを使う方法

前回の記事ではwindowsのPCにMongoDBをインストールしてGUIから実際にデータを作成しました。

今回はコマンドラインを使ってMongoDBのデータ操作をしてみましょう。

なぜMongoDBのコマンドを学ぶべきなのか


MongoDBのコマンドを学ぶことにはいくつかの理由があります。

  1. データベースの管理: MongoDBのコマンドを学ぶことで、データベースの管理が容易になります。コレクションの作成や削除、ドキュメントの挿入や更新、インデックスの作成など、データベースの基本的な操作を行うためのコマンドを学ぶことができます。
  2. クエリの実行: MongoDBは柔軟なデータモデルを持っており、クエリを使用してデータを検索・フィルタリングすることができます。MongoDBのクエリはSQLに似た構文を持っていますが、いくつかの違いもあります。MongoDBのクエリコマンドを学ぶことで、効果的なデータの取得や集計が可能となります。
  3. パフォーマンスの最適化: MongoDBのコマンドを学ぶことで、データベースのパフォーマンスを最適化することができます。インデックスの作成やクエリのチューニングなど、データベースのパフォーマンスを向上させるためのコマンドやオプションを理解し、適切に利用することができます。
  4. システム管理: MongoDBのコマンドを学ぶことで、データベースサーバーの管理も行えます。データベースのバックアップとリストア、セキュリティ設定、レプリケーションやシャーディングの設定など、MongoDBのシステム管理に関連するコマンドを学ぶことで、データベースの運用を円滑に行えます。
  5. データベースの自動化: MongoDBのコマンドを学ぶことで、データベースの自動化も可能となります。シェルスクリプトやプログラミング言語と組み合わせてMongoDBのコマンドを実行することで、データベースのタスクを自動化することができます。たとえば、定期的なバックアップのスケジューリングや、データの変換やエクスポートなどを自動化することができます。

これらの理由から、MongoDBのコマンドを学ぶことは、MongoDBデータベースの管理や操作、パフォーマンスの最適化、システム管理、自動化などに関わる様々なタスクを効果的に実行するために重要です。

MongoDBのコマンドは実際にJavaScriptでコードを書くときに役に立つ

MongoDBのコマンドは実際にJavaScriptでコードを書く際に非常に役立ちます。

MongoDBはJavaScriptを使用して操作することができるため、MongoDBのコマンドをJavaScriptコードに組み込んで使用することができます。以下にいくつかの具体的な例を挙げます。

  1. データの挿入や更新: MongoDBのinsertOneupdateOneなどのコマンドは、JavaScriptコード内で使用することができます。これにより、JavaScriptでデータを生成し、データベースに挿入したり、既存のデータを更新したりすることができます。
  2. クエリの実行: MongoDBのクエリコマンドは、JavaScriptコード内で使用してデータの検索やフィルタリングを行う際に役立ちます。findaggregateなどのコマンドを使用して、データベースから必要な情報を取得することができます。
  3. インデックスの作成: MongoDBのcreateIndexコマンドを使用して、インデックスを作成することができます。インデックスはデータベースのパフォーマンスを向上させるために重要な役割を果たすため、JavaScriptコード内で適切なインデックスを作成することができます。
  4. データベースの管理: MongoDBの管理コマンドは、JavaScriptコード内で使用してデータベースの管理を行う際に便利です。たとえば、createCollectiondropDatabaseなどのコマンドを使用して、コレクションやデータベースを作成・削除することができます。
  5. 自動化: JavaScriptを使用してMongoDBのコマンドを実行することで、タスクの自動化も可能です。たとえば、スクリプトを作成して定期的なバックアップやデータのエクスポートを自動化することができます。

以上のように、MongoDBのコマンドをJavaScriptコードに組み込むことで、データベースの操作や管理、パフォーマンスの最適化、自動化などを効果的に実行することができます。

Windowsの環境変数にMongoDBを登録する

では前回の記事でMongoDBをインストールしていることを前提にします。デフォルトでは下記のファイルパスが存在することを確認しましょう。

C:\Program Files\MongoDB\Server\6.0\bin

6.0はバージョン名なので、自分のバージョンにあったものがインストールされていればOkです。

次に公式ページからMongoDB Shellをダウンロードします。Zipファイルなので解凍してmongosh.exeファイルがあることを確認します。このmongosh.exeと一緒に入ってきたdll¥ファイルをC:\Program Files\MongoDB\Server\6.0\binに移動しておきましょう。

ではシステム環境変数に上記のパスを登録してwindowsが認識できるようにしてあげます。

※私のPCが英語なので分かりづらくてすいません。。。

これでコマンドライン(コマンドプロンプト)からmongoshを入力するとMongoDBに接続できたことが分かりますね。

mongosh

Current Mongosh Log ID: 64667d60ca0fa364b1fe7a73
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.9.0
Using MongoDB:          6.0.6
Using Mongosh:          1.9.0

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2023-05-18T11:49:10.162-04:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------

test>

もしうまくいかない場合は直接mongosh.exeをクリックしてコマンドプロンプトが開くところから確認してください。これでmongoshが起動すれば実行ファイル自体は問題がないことが確認できます。

mognodbの基本コマンド

mongoshを使用すると、MongoDBデータベースと対話的にやり取りすることができます。以下にいくつかの基本的なmongoshコマンドを示します。

  1. データベースへの接続:
mongosh "mongodb://ホスト名:ポート番号/データベース名"

mongoshを起動し、指定したホスト、ポート、およびデータベースに接続します。

  1. データベースの一覧表示:
show databases

接続されているサーバー上の利用可能なデータベースの一覧を表示します。

  1. データベースの切り替え:
use データベース名

指定したデータベースに切り替えます。データベースが存在しない場合、新しいデータベースが作成されます。

  1. コレクションの一覧表示:
show collections

現在のデータベース内のすべてのコレクションの一覧を表示します。

  1. ドキュメントの検索:
db.コレクション名.find(クエリ)

指定したコレクション内のドキュメントを検索します。クエリはドキュメントのフィルタリング条件を指定します。

  1. ドキュメントの挿入:
db.コレクション名.insertOne(ドキュメント)

指定したコレクションに単一のドキュメントを挿入します。

  1. ドキュメントの更新:
db.コレクション名.updateOne(フィルタ, 更新内容)

指定したコレクション内の最初にマッチしたドキュメントを更新します。フィルタは更新対象のドキュメントを絞り込むための条件を指定します。

  1. ドキュメントの削除:
db.コレクション名.deleteOne(フィルタ)

指定したコレクション内の最初にマッチしたドキュメントを削除します。

実際にデータを操作してみる

では上記のコマンドを例にデータを操作してみます。

“test>”は、mongoshシェルでデフォルトのデータベースが”test”に設定されている場合に表示されるプロンプトです。”test”はMongoDBのデフォルトのテスト用データベースです。

mongoshを起動し、デフォルトで使用するデータベースを指定しない場合、mongoshは”test”データベースをデフォルトで使用します。そのため、mongoshのプロンプトは “test>” と表示されます。

このプロンプトの下でコマンドを入力すると、”test”データベース内での操作やクエリが実行されます。ただし、別のデータベースを使用したい場合は、use データベース名コマンドを使用して切り替えることができます。

ではデータベースの一覧を見てみます。

test> show databases

admin    40.00 KiB
config  108.00 KiB
local    72.00 KiB
newdb    72.00 KiB

このようにadminやconfigのデフォルトでついてくるデータベースが表示されました。newdbというのは前回に作成したデータベースです。

ではmydbという名前でデータベースを作成します。MongoDBではデータベース名が存在しない場合には新しいデータベースが作成されます。

test> use mydb

switched to db mydb

mydb>

ではこのようにmydbが作成されtestmydbに切り替わりました。

次にコレクションを作成します。コレクションはリレーショナルDBでいうテーブルのことです。例としてuserというコレクションを作成します。

db.createCollection("コレクション名")

mydb> db.createCollection("user")
{ ok: 1 }

このようにokが返ってきてDB操作に成功したことが分かりますね。

ドキュメントの挿入: 作成したコレクションにドキュメント(データ)を挿入します。以下は例です。

db.コレクション名.insertOne({ key1: value1, key2: value2, ... })

db.user.insertOne({ name: "yoshi", age: 29 })
{
  acknowledged: true,
  insertedId: ObjectId("64668249ca0fa364b1fe7a74")
}

では先ほど作成したyoshiさんのデータを検索してみます。

db.user.find()


[
  { _id: ObjectId("64668249ca0fa364b1fe7a74"), name: 'yoshi', age: 29 }
]

このように自動で作成されたidと作成したドキュメントが結果として返ってきました。

まとめ

このように簡単にmongodbへ接続してmongoshを使用してデータを操作することができました。

次回はnode.jsからmongodbに接続する方法を紹介していきたいと思います。

お疲れ様でした。