Mac OSにMongoDBをインストールと基本操作の理解

MACへのMongoDBのインストール手順だけではなくデータベースの作成からCRUDの方法も一通り説明を行なっているので、MySQLなどの使用経験がある人なら操作方法の違いも理解することができます。
Macのバージョンは、macOS Big Sur 11.4, MongoDBのバージョン4.4.5です。本文書公開当時のMACのバージョンはmacOS Mojave 10.14.6、MongoDBのバージョンはv4.2.0でした。
ローカルのMongoDBを利用したくないという人であればクラウドベースのMongoDBを利用するという選択肢もあります。
目次
MongoDBとは
MongoDBはMySQLやOracleのようなリレーショナルデータベースとは異なりNoSQLデータベースとして分類されドキュメント指向データベースと呼ばれています。オープンソースでMongoDB Inc.によって開発されています。データベースへのデータの保存はキーと値によるJSONフォーマットのような形式で行います。Windows, Linux, Solaris, MACなどのさまざまなプラットフォームにインストールでき、さまざまなプログラム言語のドライバが提供されています。クラウドベースのMongoDBも提供されています。

MongoDBのインストールと初期設定
MongoDBのMACへのインストールはMongoDBの公式マニュアルを参考に行なっています。
Homebrewを使ったインストール
Homebrewを使ってインストールを行うため、Homebrewがインストールされていない場合は下記を参照にインストールを行なってください。
MongoDBは公式のMongoDBソフトウェアのTapが準備されているので、まずTapのインストールを行います。

tapのインストールが完了したmongodb-communityをインストールします。インストールのログに起動方法等が表示されるので、確認しておきましょう。
mongodbの設定ファイルが/usr/local/etc/mongod.confに作成されます。
中身を確認するとログとデータベースの保存先のパスが記述されています。
バーションの確認
インストールにバージョンを指定していため、どのバージョンがインストールされているかわからない場合は下記のコマンドで確認することができます。

起動・停止方法の確認
再起動してもmongdbのバックグランドプロセスを自動起動させたい場合は、brew services startコマンドを実行します。
サービスを停止したい場合は以下のbrew services stopコマンドを実行します。
起動しているかどうはbrew services listから確認することができます。特にMacでは本番ではなく開発のために利用すると思うので無駄なリソースを使わないためにも不必要なサービスが起動している場合はサービスを停止するようにしてください。
手動で起動したい場合は、設定ファイルを指定して起動を行います。指定しなければ/data/dbをデータディレクトリのパスとして利用します。
手動で起動した場合は起動を実行したコンソールでCtrl + Cでコマンドを終了させることでMongoDBを停止することができます。
MongDBへの接続
MongoDBへ接続するためには、MongoDBを起動させておく必要があります。
ローカルのMongDBへの接続はmongoコマンドで行うことができます。接続時にもMongoDBのバージョンが表示されます。
Error: couldn’t connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
といったエラーがコンソールに表示されます。

MongoDBのデフォルトのポートは、27017に設定されています。
データベースの操作
データベースの確認
mongoコマンドでMongoDBに接続したあと、コマンドを使ってMongoDBを操作することができます。
show dbsコマンドを実行するとMongoDBのデフォルトに存在するデータベースを作成することができます。
MongoDBのデータ構造
SQLデータベースでは、データベースを作成すると次にテーブルを作成し、テーブルの中に行を作成していきます。
MongoDBの場合は、データベースという名前は同じですが、テーブルではなくコレクション、行ではなくドキュメントという単位でデータを作成していきます。
データベースの作成
データベースの作成はuse “データベース名”を使います。データベース名がMongoDBの中に存在している場合は、useで指定したデータベースに接続し、もしなければデータベースを作成します。
接続しているデータベースはdbコマンドを確認することができます。useを実行した際にswitched to db test_dbでtest_dbに接続しているので、test_dbと表示されます。
作成したデータベースを確認するためにshow dbsコマンドを実行します。
しかし、test_dbはshow dbsコマンドで表示されません。show dbsコマンドでtest_dbを表示させるためには、コレクションを追加する必要があります。コレクションは、createCollectionコマンドで作成することができます。実行結果はJSONで戻されていることも確認できます。
コレクションが作成できればshow dbsコマンドでデータベースを確認することができます。
コレクションの確認
接続しているデータベースのコレクションはshow collectionsコマンドで確認することができます。コレクションの削除はdb.collection_name.drop()で削除することができます。
データベースの削除
作成したデータベースを削除したい場合は、削除したいデータベースに接続して、db.dropDatabaseコマンドを実行します。
ドキュメントの作成
コレクションを作成したので、実際のデータであるドキュメントをコレクション内に作成します。1つのドキュメントを作成するためinsertOneコマンドを実行します。


作成したデータはfindコマンドで確認することができます。nameとageの他に_idキーが自動で追加されていることもわかります。
さらにもう一つデータを追加しますが、キーと値のペア(emailのキーと値のkevin@test.com)をもう一つ増やします。それでもエラーなしに追加することができます。
再度findコマンドを実行するとキーの数の異なるドキュメントが表示されます。
findで表示される内容をきれいにしたい場合は、prettyを追加します。
一度に複数のドキュメントを作成したい場合はinsertManyを利用することができます。配列の中にオブジェクトを複数入れることで複数の挿入に対応します。
ドキュメントの表示
findコマンドを使うとコレクションに保存されているすべてのドキュメントが表示されます。ObjectIdを使って、コレクションを表示させたい場合は、下記のように実行します。
キーを使って表示する場合は、キーと値を使って行います。
ドキュメントの削除
ドキュメントを1件削除するにはdeleteOneを使います。コレクション全体をfindで確認し、指定したドキュメントが削除されているか確認します。
ドキュメントの更新
nameがJohn Doeのageを30から45に変更しています。updateの前後にfindコマンドを実行し、更新が正常に行われているか確認しています。
updateには下記のように$setを使って行います。
実際にアプリケーションを作成する場合はコマンドラインでドキュメントの作成、更新、削除を行う機会は少ないかもしれませんがアプリケーションから本当に作成、更新、削除が行われているか確認するときに利用する機会があるのでコマンドもしっかりと理解しておきましょう。
次はExpressサーバからの接続に関する以下の記事がおすすめです。