こんにちは、かつコーチです。
前回の記事で、MongoDBが「ドキュメント指向のNoSQLデータベース」であることを解説しました。
今回は実際に手を動かして、自分のパソコンにMongoDBをインストールし、コマンドラインツールmongosh(Mongo Shell)で操作するところまでを解説します。
MySQLでいうmysqlコマンド、PostgreSQLでいうpsqlに相当するのがmongoshです。
SQL文の代わりにJavaScriptライクな構文を使う点が最初の関門になりますが、慣れれば直感的です。
MongoDBのインストール方法の選択肢
インストール方法は3パターンから選ぶ
MongoDBを使い始める方法は、大きく3つの選択肢があります。
それぞれメリット・デメリットが違うので、目的に応じて選んでください。
| 方法 | 特徴 | こんな人におすすめ |
|---|---|---|
| ローカルインストール(Homebrew等) | OSに直接インストール。常駐サービスとして動作 | 普段使いのPCでずっと使いたい |
| Docker | コンテナで隔離環境として起動。削除も簡単 | 環境を汚したくない、複数バージョンを試したい |
| MongoDB Atlas(クラウド) | インストール不要。ブラウザから利用開始 | すぐに試したい、チーム共有したい |
初心者にまずおすすめなのはDockerです。
ローカルインストールのようにOS設定に依存せず、docker rm一発で環境をリセットできるため、学習用途との相性が良いからです。
本記事もDockerでの手順を中心に解説します。
Dockerを使ったMongoDBの起動
Docker Desktopがインストール済みであることを前提に進めます。
# MongoDB 7.x系の公式イメージを起動
docker run -d \
--name mongo-practice \
-p 27017:27017 \
mongo:7.0
-p 27017:27017は、MongoDBの標準ポート27017番をホスト側にも公開する設定です。
起動後、以下のコマンドでコンテナが動いていることを確認しましょう。
docker ps
mongo-practiceという名前のコンテナがUp状態で表示されていれば成功です。
❌よくある失敗:ポート番号の重複
❌ Before:既に27017番を使っている別プロセスがあると起動に失敗する
docker: Error response from daemon: driver failed programming external
connectivity on endpoint mongo-practice: Bind for 0.0.0.0:27017 failed:
port is already allocated.
私も初めてMongoDBを触ったとき、ローカルにインストール済みのMongoDBサービスが裏で起動していることに気づかず、このエラーに数分悩んだことがあります。lsof -i :27017(Mac/Linux)で使用中のプロセスを確認するか、ポート番号自体を変更すれば解決します。
✅ After:ホスト側のポートを変更して衝突を回避する
docker run -d \
--name mongo-practice \
-p 27018:27017 \
mongo:7.0
mongoshのインストールと接続
mongoshとは?
mongoshは、MongoDBに接続してコマンドを実行するための公式CLIツールです。
以前はmongoという名前のシェルが使われていましたが、MongoDB 6.0以降は非推奨となり、現在は後継のmongoshが標準となっています。
Homebrew(Mac)を使う場合は次のコマンドでインストールできます。
brew install mongosh
Windowsの場合は公式サイトからインストーラーをダウンロードします。
mongoshで接続する
Dockerで起動したMongoDBに、mongoshから接続します。
mongosh "mongodb://localhost:27017"
接続に成功すると、次のようなプロンプトに切り替わります。
test>
testは接続時のデフォルトデータベース名です。
ここまで来れば、SQLのmysql>やpostgres=#プロンプトと同じ感覚でコマンドを打てる状態になっています。
mongoshの基本操作
データベース一覧・切り替え
まずは基本のナビゲーションコマンドを覚えましょう。
SQLのSHOW DATABASES;やUSE dbname;に相当する操作です。
// データベース一覧を表示
show dbs
// データベースを切り替える(存在しなければ後で作成される)
use practice_db
// 現在のデータベース名を確認
db
MongoDBでは、useで切り替えた時点ではまだデータベースは実体として作成されません。
中にコレクション(データ)が1件以上作られて、初めてデータベースが実体化します。
これはSQLのCREATE DATABASEとは異なる感覚なので、覚えておいてください。
コレクション一覧・簡単なドキュメント挿入
データベース内のコレクション一覧はshow collectionsで確認できます。
まだ何も作っていない状態なので、試しに1件データを挿入してみましょう。
// usersコレクションに1件挿入(コレクションは自動的に作成される)
db.users.insertOne({ name: "田中太郎", age: 28 })
// コレクション一覧を確認
show collections
// 挿入したデータを確認
db.users.find()
db.usersという書き方が、SQLでいうFROM usersに近い感覚です。
MongoDBではCREATE TABLE文に相当する事前定義が不要なため、insertOneを実行した瞬間にコレクションが自動生成される点がSQLとの大きな違いです。
まとめ
この記事のポイント
- MongoDBの環境構築はローカルインストール・Docker・MongoDB Atlasの3択があり、学習用途にはDockerがおすすめ
- 接続には公式CLIツールmongoshを使う。旧
mongoシェルは非推奨 useでのデータベース切り替えは即座に実体化しない。コレクションが作られて初めて実体化するinsertOne実行時にコレクションが自動作成される点は、事前にCREATE TABLEが必要なSQLとの大きな違い
次に読むべき記事
環境が整ったところで、次回は「コレクションとドキュメント、BSONの基本」で、MongoDBのデータ構造そのものをもう一歩深掘りします。
タグ: MongoDB 初心者向け 環境構築