MongoDB: 環境セットアップとmongosh:MongoDB開発環境の完全設定ガイド

最終更新:2026-08-26

mongoshはMongoDB公式のコマンドラインクライアントです。MongoDBと対話する最も直接的なツールです。

このチュートリアルは初学者向けに設計されており、ローカルインストールからAtlasへの接続、基本的なmongoshコマンドから最初のpingテストまでをカバーしています。

1. 学習内容




2. フルスタックエンジニアの実例

(1) 課題:新しいPCにMongoDB環境をゼロから構築する

Bobは新しいMacBook Pro M3を手に入れ、この新品のマシンにMongoDB開発環境を構築しようとしています:

「30分以内にNode.jsコードをMongoDBに接続し、最初のCRUD操作を動作させたい。でも以前はWindowsを使っていて、今はM3チップを搭載したARM Macに切り替えたので、見つけたチュートリアルがどれも動作しない。」

3つのアプローチを試みましたが、すべて失敗しました:

ソリューション 問題
❌ brew install mongodb M3 ARMアーキテクチャにはhomebrew/coreの公式フォーミュラがない
❌ .dmgインストーラーをダウンロード 「開発者が確認できないため開けません」というメッセージ
❌ MongoDBダウンロードページから macOS ARM版が見つからない

(2) MongoDBとDockerを使用した解決策

Dockerを使用してローカルコンパイルの問題を回避します。

BASH
# 1. Docker Desktop for Mac (Apple Silicon)をインストール
# https://www.docker.com/products/docker-desktop/ からダウンロード

# 2. MongoDBイメージをプル
docker pull mongo:7.0

# 3. MongoDBコンテナを起動(ポート転送 + データボリューム)
docker run -d \
  --name mongodb-dev \
  -p 27017:27017 \
  -v ~/mongodb-data:/data/db \
  mongo:7.0

# 4. mongoshで接続
mongosh "mongodb://localhost:27017/admin"

# 5. 接続テスト
db.runCommand({ ping: 1 })
# { ok: 1 }

(3) 成果

項目 ネイティブインストール Dockerインストール
クロスプラットフォーム ❌ プラットフォームごとに異なる ✅ 一度構築すればどこでも実行可能
複数バージョンの共存 ❌ 困難 ✅ 複数コンテナの起動
完全アンインストール ❌ 設定が残る ✅ コンテナを削除するだけ
チーム統一 ⚠️ OSバージョンに依存 ✅ イメージバージョン固定
起動時間 1〜3分 5〜10秒



3. インストール方法の比較

概念概要:MongoDBは4つのインストール方法を提供しています。Dockerコンテナ、Atlasクラウドサービス、ネイティブインストール(brew/apt/msi)、パッケージマネージャー。選択する方法はユースケースによります。開発環境にはDockerを推奨(クロスプラットフォーム、分離、高速)。チーム協業にはAtlasを推奨(メンテナンス不要、グローバル展開)。本番環境にはネイティブインストールを推奨(最高のパフォーマンス)。

仕組み:DockerコンテナはLinux名前空間を使用してMongoDBプロセスを分離し、データはボリュームマウントでホストマシンに永続化されます。AtlasクラウドサービスはAWS、Azure、GCPにレプリカセットを自動展開し、自動バックアップと監視を提供します。ネイティブインストールはmongodプロセスを直接実行し、最適なパフォーマンスを提供しますが、手動管理が必要です。

100%
graph TB
    A[MongoDBインストール方法] --> B[ネイティブインストール<br/>brew/apt/dmg/exe]
    A --> C[Dockerコンテナ<br/>迅速な開発に推奨]
    A --> D[Atlasクラウドサービス<br/>ローカル設定不要]
    A --> E[パッケージマネージャー<br/>Homebrew/Chocolatey]

    style C fill:#d4edda
    style D fill:#d4edda
方法 適用 難易度 推奨シナリオ パフォーマンス
Docker クロスプラットフォーム ⭐⭐⭐ 迅速な開発 ⚠️ わずかなオーバーヘッド
Atlas クラウドサービス ⭐⭐ ⭐⭐⭐ チーム協業 ✅ 管理最適化済み
brew/aptネイティブ 単一プラットフォーム ⭐⭐ ⭐⭐ 本番環境 ✅ 最高
公式.dmg/.exe グラフィカル ⭐⭐⭐ ⭐ 一度だけの使用 ✅ 最高

(1) 4つのインストール方法

100%
graph TB
    A[MongoDBインストール方法] --> B[ネイティブインストール<br/>brew/apt/dmg/exe]
    A --> C[Dockerコンテナ<br/>迅速な開発に推奨]
    A --> D[Atlasクラウドサービス<br/>ローカル設定不要]
    A --> E[パッケージマネージャー<br/>Homebrew/Chocolatey]

    style C fill:#d4edda
    style D fill:#d4edda
方法 適用 難易度 推奨シナリオ
Docker クロスプラットフォーム ⭐⭐⭐ 迅速な開発
Atlas クラウドサービス ⭐⭐ ⭐⭐⭐ チーム協業
brew/aptネイティブ 単一プラットフォーム ⭐⭐ ⭐⭐ 本番環境
公式.dmg/.exe グラフィカル ⭐⭐⭐ ⭐ 一度だけの使用

(2) MongoDBバージョンの選択

概念説明:MongoDBはLTS(Long-Term Support)リリース戦略に従っており、各メジャーバージョンは3〜5年間サポートされます。バージョンを選択する際は、最新版よりもLTS版を優先すべきです。LTS版は十分にテストされ、長期的なセキュリティ更新の保証が付いています。

バージョン リリース日 ステータス 推奨用途
MongoDB 8.0 2024年 最新LTS候補 新規プロジェクト
MongoDB 7.0 2023年 現在のLTS このチュートリアルで使用
MongoDB 6.0 2022年 前のLTS 互換性優先
MongoDB 5.0 2021年 EOLに近づく 非推奨

▶ サンプル 1:バージョン確認コマンド

BASH
# mongoshバージョンの確認
mongosh --version
# mongosh 2.1.0

# mongodサーバーバージョンの確認
mongod --version
# db version v7.0.5

# mongosh経由でサーバーバージョンを確認
mongosh "mongodb://localhost:27017" --eval "db.version()"
# 7.0.5



4. Dockerによるインストール(推奨)

概念概要:DockerはMongoDB開発環境を構築する最も推奨される方法です。DockerはMongoDBとその依存関係をコンテナにパッケージ化し、ホストマシンのファイルシステムとネットワークから分離します。これにより「一度構築すればどこでも実行可能」を実現します。ネイティブインストールと比較して、Dockerには次の利点があります:クロスプラットフォームの一貫性、複数バージョンのサポート、クリーンなアンインストール、極めて高速な起動(5〜10秒)。

仕組み:Dockerコンテナは本質的にLinuxプロセスの分離された実行環境です。MongoDBコンテナは公式イメージ(mongo:7.0)を使用し、内部でmongodプロセスを実行します。ポートマッピング(-p 27017:27017)でコンテナのポートをホストマシンに公開し、ボリュームマウント(-v ~/mongodb-data:/data/db)でデータをホストマシンに永続化します。これによりコンテナを削除してもデータが失われません。

100%
graph LR
    A[ホストマシン] --> B[Docker Engine]
    B --> C[mongodb-devコンテナ]
    C --> D[mongodプロセス<br/>ポート27017]
    A --> E[~/mongodb-data<br/>データボリュームのマウント]
    E --> D
    A --> F[mongoshクライアント<br/>localhost:27017に接続]
    F --> D

    style C fill:#d4edda

(1) 4.1 前提条件

BASH
# Docker Desktopのインストール
# macOS: https://www.docker.com/products/docker-desktop/ からダウンロード
# Windows: ダウンロード + WSL 2バックエンドの有効化
# Linux: sudo apt install docker.io docker-compose

# Dockerインストールの確認
docker --version
# Docker version 24.0.7, build afdd53b

(2) 4.2 MongoDBイメージのプル

BASH
# 最新の安定版を取得
docker pull mongo:7.0

# 特定バージョンのプル(推奨)
docker pull mongo:7.0.5

# 認証付きイメージのプル(本番環境推奨)
docker pull mongo:7.0-auth

(3) 4.3 MongoDBコンテナの起動

BASH
# スタンドアロン開発モード(認証なし)
docker run -d \
  --name mongodb-dev \
  -p 27017:27017 \
  -v ~/mongodb-data:/data/db \
  --restart unless-stopped \
  mongo:7.0

# 認証付き本番モデル
docker run -d \
  --name mongodb-prod \
  -p 27017:27017 \
  -v ~/mongodb-data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=YourSecurePass123 \
  --restart unless-stopped \
  mongo:7.0

# コンテナの実行状態を確認
docker ps
# CONTAINER ID   IMAGE      STATUS         PORTS
# a1b2c3d4e5f6   mongo:7.0  Up 2 minutes   0.0.0.0:27017->27017/tcp

(4) 4.4 接続の確認

BASH
# mongoshで接続
mongosh "mongodb://localhost:27017"

# mongosh内で
db.runCommand({ ping: 1 })
# { ok: 1 }

(5) 4.5 よく使うDockerコマンド

BASH
# コンテナログの確認
docker logs mongodb-dev

# コンテナの停止
docker stop mongodb-dev

# コンテナの起動
docker start mongodb-dev

# コンテナの再起動
docker restart mongodb-dev

# コンテナに入る
docker exec -it mongodb-dev mongosh

# コンテナの削除(データボリュームは保持)
docker rm mongodb-dev

# コンテナとデータボリュームの削除(注意!データ損失)
docker rm -v mongodb-dev



5. macOSネイティブインストール

(1) 5.1 Homebrewのインストール

BASH
# MongoDB公式Tapを追加
brew tap mongodb/brew

# 最新安定版をインストール
brew install mongodb-community@7.0

# MongoDBサービスを開始
brew services start mongodb-community@7.0

# 確認
mongosh --version
mongosh "mongodb://localhost:27017" --eval "db.runCommand({ ping: 1 })"

(2) 5.2 手動起動(brew servicesを使用しない場合)

BASH
# mongodを起動(データディレクトリとログファイルを指定)
mongod --dbpath ~/mongodb-data --logpath ~/mongodb.log --fork

# 確認
ps aux | grep mongod
# mongodb  12345  ... mongod --dbpath /Users/.../mongodb-data

▶ サンプル 2:完全なmacOSインストールプロセス

BASH
# === 1. Xcode Command Line Toolsのインストール ===
xcode-select --install

# === 2. Homebrewのインストール(まだの場合)===
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# === 3. MongoDB Tapの追加 ===
brew tap mongodb/brew

# === 4. MongoDBのインストール ===
brew install mongodb-community@7.0

# === 5. サービスの開始 ===
brew services start mongodb-community@7.0

# === 6. 接続テスト ===
mongosh "mongodb://localhost:27017"

# === 7. 最初のコマンド ===
db.runCommand({ ping: 1 })

出力:

TEXT 📖 参照専用
{ ok: 1 }



6. Linuxインストール

Ubuntu / Debian

BASH
# 1. MongoDB GPGキーのインポート
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -

# 2. MongoDBリポジトリの追加
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# 3. パッケージインデックスの更新
sudo apt update

# 4. MongoDBのインストール
sudo apt install -y mongodb-org

# 5. サービスの開始
sudo systemctl start mongod
sudo systemctl enable mongod

# 6. 確認
sudo systemctl status mongod
mongosh --eval "db.runCommand({ ping: 1 })"

CentOS / RHEL / Fedora

BASH
# 1. MongoDB Yumリポジトリの追加
sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo << 'EOF'
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
EOF

# 2. インストール
sudo yum install -y mongodb-org

# 3. 起動
sudo systemctl start mongod
sudo systemctl enable mongod



7. Windowsインストール

(1) 7.1 MSIインストーラー(グラフィカル)

TEXT 📖 参照専用
1. https://www.mongodb.com/try/download/community にアクセス
2. "Windows" + "msi" + バージョン7.0 を選択
3. MongoDB-windows-x86_64-7.0.x-signed.msi をダウンロード
4. ダブルクリックしてインストール:
   ✅ Complete Installation Type
   ✅ Install MongoDB as a Service
   ✅ Install MongoDB Compass(GUIツール)
5. インストール完了後、MongoDBは自動的にWindowsサービスとして開始

(2) 7.2 Chocolateyによるインストール

POWERSHELL
# 1. Chocolateyのインストール(まだの場合)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 2. MongoDBのインストール
choco install mongodb

# 3. 起動
mongod --dbpath C:\data\db

# 4. 接続
mongosh "mongodb://localhost:27017"

▶ サンプル 3:完全なWindowsインストールプロセス

POWERSHELL
# === 1. データディレクトリの作成 ===
mkdir C:\data\db

# === 2. MongoDBの起動 ===
mongod --dbpath C:\data\db

# === 3. 別の端末で接続 ===
mongosh "mongodb://localhost:27017"

# === 4. テスト ===
db.runCommand({ ping: 1 })

出力:

TEXT 📖 参照専用
{ ok: 1 }



8. MongoDB Atlasクラウドサービスの設定

概念概要:MongoDB Atlasは、AWS、Azure、GCPの3つの主要クラウドプラットフォームで利用可能な公式のフルマネージドクラウドデータベースサービスです。Atlasはチーム協業と越境展開シナリオに最適な選択肢です。メンテナンス不要、自動バックアップ、グローバル展開、組み込み監視を提供します。Atlasは512 MBの永久無料枠(M0 Sandbox)を提供しており、学習と小規模プロジェクトに十分です。

仕組み:Atlasはクラウドプラットフォーム上に3ノードのレプリカセットを自動展開します。Primaryノードが書き込みリクエストを処理し、2つのSecondaryノードが読み取り冗長性と自動フェイルオーバーを提供します。ユーザーはAtlas Webコンソールを通じてクラスターを管理し、ネットワークホワイトリストを設定し、データベースユーザーを作成します。接続文字列はmongodb+srv://形式をサポートし、DNS SRVレコードを通じてクラスターノードが自動的に検出されます。

100%
graph LR
    A[あなたのアプリ] --> B[Atlasグローバルクラスター<br/>3ノードレプリカセット]
    B --> C[Primary<br/>読み書き]
    B --> D[Secondary 1<br/>読み取り冗長]
    B --> E[Secondary 2<br/>読み取り冗長]
    B --> F[自動バックアップ<br/>PITR]
    B --> G[監視アラート<br/>パフォーマンス推奨]

    style B fill:#d4edda

(1) 8.1 無料クラスターの作成

TEXT 📖 参照専用
1. https://www.mongodb.com/cloud/atlas/register にアクセス
2. サインアップ(Google / GitHub OAuthが最速)
3. "Build a Cluster" → "Shared" → "M0 Sandbox"(無料)を選択
4. クラウドプロバイダー:AWS(推奨)
5. リージョン:
   - 中東ユーザー:me-central-1(UAE)
   - ブラジルユーザー:sa-east-1(サンパウロ)
   - 日本ユーザー:ap-northeast-1(東京)
6. クラスター名:Cluster0
7. "Create Cluster"をクリック(1〜3分待機)

(2) 8.2 アクセス権限の設定

TEXT 📖 参照専用
手順1:データベースユーザーの作成
- Database Access → Add New Database User
- Username: alice
- Password: YourSecurePass123
- Database User Privileges: Read and write to any database

手順2:ネットワークホワイトリストの設定
- Network Access → Add IP Address
- "Allow Access from Anywhere"を選択(0.0.0.0/0)
  ⚠️ 開発用のみ。本番環境ではアプリケーションサーバーのIPに制限すべき

(3) 8.3 接続文字列の取得

TEXT 📖 参照専用
1. Database → Connect → Connect your application
2. Driver: Node.js
3. Version: 5.5以降
4. 接続文字列:
   mongodb+srv://alice:YourSecurePass123@cluster0.mongodb.net/mydb?retryWrites=true&w=majority

▶ サンプル 4:Atlasクラスターへの接続

BASH
# mongoshでAtlasに接続
mongosh "mongodb+srv://cluster0.mongodb.net/mydb" --username alice
# Password: ********

# mongosh内で
db.runCommand({ ping: 1 })

出力:

TEXT 📖 参照専用
{ ok: 1 }
BASH
# 最初のドキュメントを挿入
db.users.insertOne({ name: "Alice", email: "alice@example.com" })

出力:

TEXT 📖 参照専用
{ acknowledged: true, insertedId: ObjectId('...') }
BASH
# 検索
db.users.find()

出力:

TEXT 📖 参照専用
{ _id: ObjectId('...'), name: 'Alice', email: 'alice@example.com' }



9. mongoshコマンドラインクライアント

概念概要:mongoshはMongoDB公式のコマンドラインクライアントです(2020年以降、旧来のmongoシェルを置き換え)。Node.js上で動作し、モダンなJavaScript構文、シンタックスハイライト、自動補完、エラースタックトレースをサポートしています。mongoshはMongoDBと対話する最も直接的なツールです。すべてのデータベース操作をmongoshで実行できます。

仕組み:mongoshはMongoDB Wire Protocolを通じてmongodサーバーと通信します。デフォルトでローカルマシンのポート27017に接続しますが、Atlas接続文字列とTLS暗号化接続もサポートしています。mongoshにはdbオブジェクト(現在のデータベース)とグローバルメソッド(show dbsuseなど)が含まれており、すべての操作はJavaScript構文で実行されます。

100%
graph LR
    A[mongoshクライアント] --> B[Wire Protocol]
    B --> C[mongodサーバー側]
    C --> D[WiredTigerエンジン]
    
    A --> A1[JavaScriptランタイム]
    A --> A2[自動補完]
    A --> A3[シンタックスハイライト]

    style A fill:#cce5ff
コマンドカテゴリー よく使うコマンド 説明
データベース show dbs / use db / db.dropDatabase() 表示、切り替え、削除
コレクション show collections / db.createCollection() / db.col.drop() 作成
ドキュメント insertOne/find/updateOne/deleteOne CRUD操作
ヘルプ help / db.help() / db.col.help() 組み込みドキュメント

(1) mongoshの起動

BASH
# デフォルトのローカルポートに接続
mongosh

# 指定したホストとポートに接続
mongosh "mongodb://localhost:27017"

# Atlasに接続
mongosh "mongodb+srv://cluster0.mongodb.net/mydb" --username alice

# 接続して単一コマンドを実行
mongosh "mongodb://localhost:27017" --eval "db.runCommand({ ping: 1 })"

# 詳細モードを有効化(各コマンドの所要時間を表示)
mongosh --verbose

(2) 基本的なmongoshコマンド

JAVASCRIPT
// === データベース操作 ===
show dbs                    // 全データベースを一覧
use shopdb                  // shopdbデータベースに切り替え(存在しない場合は暗黙的に作成)
db                          // 現在のデータベースを表示
db.dropDatabase()           // 現在のデータベースを削除

// === コレクション操作 ===
show collections            // 現在のデータベースの全コレクションを一覧
db.createCollection("products")  // コレクションを明示的に作成
db.products.drop()          // コレクションを削除

// === ドキュメント操作 ===
db.products.insertOne({ sku: "PHONE-001", price: 599.99 })
db.products.find()          // 全ドキュメントを検索
db.products.find().pretty() // 整形出力
db.products.countDocuments()  // ドキュメント数をカウント

// === ヘルプコマンド ===
help                        // mongosh組み込みヘルプ
db.help()                   // データベースコマンドのヘルプ
db.products.help()          // コレクション操作のヘルプ

(3) mongoshキーボードショートカット

ショートカットキー 機能
↑ / ↓ コマンド履歴の表示
Tab 自動補完
Ctrl + A 行頭にジャンプ
Ctrl + E 行末にジャンプ
Ctrl + U 行全体を削除
Ctrl + L 画面をクリア
Ctrl + C 現在のコマンドをキャンセル
Ctrl + D / exit mongoshを終了

▶ サンプル 5:mongoshスクリプトファイル

BASH
# === スクリプトの作成(setup-mongosh.js)===
cat > setup-mongosh.js << 'EOF'
// shopdbに切り替え
use shopdb;

// ユーザーコレクションの作成
db.users.insertMany([
  { name: "Alice", email: "alice@example.com", age: 28 },
  { name: "Bob", email: "bob@example.com", age: 32 },
  { name: "Charlie", email: "charlie@example.com", age: 25 }
]);

// 商品コレクションの作成
db.products.insertMany([
  { sku: "PHONE-001", title: "Phone X", price: 599.99, stock: 50 },
  { sku: "LAPTOP-001", title: "Laptop Y", price: 1299.99, stock: 20 }
]);

// 全ユーザーを検索
print("Users:");
db.users.find().forEach(printjson);

// 全商品を検索
print("Products:");
db.products.find().forEach(printjson);
EOF

# === スクリプトの実行 ===
mongosh "mongodb://localhost:27017" setup-mongosh.js



10. VSCode MongoDBプラグイン

(1) 10.1 プラグインのインストール

TEXT 📖 参照専用
1. VSCodeを開く
2. Extensions(Ctrl+Shift+X)
3. "MongoDB for VS Code"を検索
4. Installをクリック(MongoDB Inc.が提供する公式プラグイン)

(2) 10.2 データベースへの接続

TEXT 📖 参照専用
1. サイドバーのMongoDBアイコンをクリック
2. "Add Connection"をクリック
3. 接続文字列を入力:
   - ローカル:mongodb://localhost:27017
   - Atlas:mongodb+srv://cluster0.mongodb.net/mydb
4. ユーザー名とパスワードを入力
5. データベースを選択し、コレクションを閲覧

(3) 10.3 よく使う操作

TEXT 📖 参照専用
- 右クリックメニュー → "View Documents":データを閲覧
- 右クリックメニュー → "Insert Document":ドキュメントを挿入
- ドキュメントを右クリック → "Edit Document":編集
- ドキュメントを右クリック → "Delete Document":削除
- トップツールバー → "Playgrounds":mongoshスクリプトを実行

▶ サンプル 6:VSCode Playgroundsでクエリを実行

JAVASCRIPT
// VSCode MongoDB Playground
use('shopdb');

db.users.aggregate([
  { $group: { _id: '$age', count: { $sum: 1 } } },
  { $sort: { _id: 1 } }
]);



11. 最初のPingテスト

概念説明db.runCommand({ ping: 1 })はMongoDBの「ハートビート」コマンドで、クライアントとサーバー間の接続が正常に機能しているかを確認するために使用します。pingテストはMongoDBへの接続を確立する最初のステップです。ビジネスロジックを書く前に、まずpingで接続が成功していることを確認すべきです。これはデータベースデバッグの基本原則です。

仕組み:pingコマンドはMongoDB Wire Protocolを通じてサーバーにpingコマンドを送信します。サーバーは{ ok: 1 }を返して接続が成功したことを示します。ping応答時間はネットワーク往復遅延にサーバー処理時間を加えたものに等しく、ネットワーク品質の監視に使用できます。Node.jsでは、pingコマンドはエンドポイントヘルスチェック(/healthz)やCI/CD事前接続テストに使用されます。

100%
sequenceDiagram
    participant App as クライアント
    participant Mongo as MongoDB

    App->>Mongo: db.runCommand({ ping: 1 })
    Mongo-->>App: { ok: 1 }
    Note over App,Mongo: 応答時間 = ネットワークレイテンシー

    App->>Mongo: db.runCommand({ ping: 1 })
    Mongo-->>App: { ok: 1, operationTime: ... }
pingの用途 説明
接続検証 初回接続後にサービスの可用性を確認
レイテンシー監視 ネットワーク往復時間を測定
ヘルスチェック /healthzエンドポイントの定期チェック
CI/CD事前デプロイチェック デプロイ前にデータベース可用性を確認

(1) 11.1 なぜpingが重要なのか?

db.runCommand({ ping: 1 })はMongoDBの「ハートビート」コマンドです:

(2) 11.2 mongoshでの実行

JAVASCRIPT
// mongosh内で
db.runCommand({ ping: 1 });

出力:

TEXT 📖 参照専用
{ ok: 1 }
JAVASCRIPT
// タイムスタンプ付きping
const start = Date.now();
const result = db.runCommand({ ping: 1 });
const duration = Date.now() - start;
print(`Ping successful in ${duration}ms`);
printjson(result);

出力:

TEXT 📖 参照専用
Ping successful in 5ms
{ ok: 1 }

(3) 11.3 Node.jsでの接続テスト

JAVASCRIPT
// ping-test.js
const { MongoClient } = require('mongodb');

async function testConnection() {
  const client = new MongoClient('mongodb://localhost:27017');

  try {
    const start = Date.now();
    await client.connect();

    const result = await client.db('admin').command({ ping: 1 });
    const duration = Date.now() - start;

    console.log(`✅ Connected in ${duration}ms`);
    console.log('Ping result:', result);

    if (result.ok === 1) {
      console.log('🎉 MongoDB connection is healthy!');
    } else {
      console.error('❌ Ping failed:', result);
    }
  } catch (err) {
    console.error('❌ Connection error:', err.message);
    process.exit(1);
  } finally {
    await client.close();
  }
}

testConnection();

出力:

TEXT 📖 参照専用
✅ Connected in 15ms
Ping result: { ok: 1 }
🎉 MongoDB connection is healthy!

▶ サンプル 7:完全なヘルスチェックスクリプト

JAVASCRIPT
// health-check.js
const { MongoClient } = require('mongodb');
const mongoose = require('mongoose');

async function healthCheck() {
  const results = {
    native_driver: false,
    mongoose: false,
    timestamp: new Date().toISOString()
  };

  // 1. ネイティブドライバーのテスト
  try {
    const client = new MongoClient('mongodb://localhost:27017');
    await client.connect();
    const ping = await client.db('admin').command({ ping: 1 });
    results.native_driver = ping.ok === 1;
    await client.close();
    console.log('✅ Native driver ping:', ping.ok === 1);
  } catch (err) {
    console.error('❌ Native driver ping failed:', err.message);
  }

  // 2. mongooseのテスト
  try {
    await mongoose.connect('mongodb://localhost:27017/test');
    const adminDb = mongoose.connection.db.admin();
    const ping = await adminDb.command({ ping: 1 });
    results.mongoose = ping.ok === 1;
    await mongoose.disconnect();
    console.log('✅ Mongoose ping:', ping.ok === 1);
  } catch (err) {
    console.error('❌ Mongoose ping failed:', err.message);
  }

  console.log('\nHealth check results:', JSON.stringify(results, null, 2));
  return results;
}

healthCheck();



12. よくあるインストール問題のトラブルシューティング

(1) 12.1 接続失敗の問題

エラーメッセージ 原因 解決策
ECONNREFUSED 127.0.0.1:27017 mongodが実行されていない brew services start mongodb-community@7.0
MongoServerSelectionError: connection timeout ネットワーク問題またはAtlasホワイトリスト未設定 Atlas Network AccessでIPを追加
Authentication failed ユーザー名またはパスワードが間違っている パスワードをリセットまたは新規アカウント作成
getaddrinfo ENOTFOUND cluster0.mongodb.net DNS解決失敗 ネットワーク接続を確認またはIPアドレスを使用
Operation timed out ファイアウォールでブロック ポート27017を開放

(2) 12.2 Dockerコンテナが起動しない

BASH
# コンテナログを確認して原因を特定
docker logs mongodb-dev

# よくあるエラー:ポートが使用中
# Error: bind: address already in use

# 解決策1:ポートを占有しているプロセスを確認
lsof -i :27017
kill -9 <PID>

# 解決策2:別のポートに切り替え
docker run -d --name mongodb-dev -p 27018:27017 mongo:7.0
mongosh "mongodb://localhost:27018"

(3) 12.3 ディスク容量不足

BASH
# ディスク容量を確認
df -h

# MongoDBのデフォルトデータディレクトリが使用するディスク容量
du -sh ~/mongodb-data

# クリーンアップ方法:oplogSizeの制限を設定(レプリカセットモード)
mongod --oplogSize 1024

# またはWiredTiger圧縮を使用(デフォルトで有効)
mongod --wiredTigerCollectionConfig blockCompressor=zstd

▶ サンプル 8:完全なトラブルシューティングプロセス

BASH
# === 手順1:mongodが実行されているか確認 ===
ps aux | grep mongod | grep -v grep

# === 手順2:ポートリスニングの確認 ===
lsof -iTCP:27017 -sTCP:LISTEN

# === 手順3:接続試行 ===
mongosh "mongodb://localhost:27017"

# === 手順4:mongodログの確認 ===
tail -50 /usr/local/var/log/mongodb/mongo.log

# === 手順5:サービスの再起動 ===
brew services restart mongodb-community@7.0

# === 手順6:再テスト ===
mongosh "mongodb://localhost:27017" --eval "db.runCommand({ ping: 1 })"

❓ よくある質問

Q Dockerとネイティブインストールのどちらが良いですか?
A ローカル開発にはDockerを推奨(クロスプラットフォーム、分離、高速)。本番環境にはネイティブインストールを推奨(より良いパフォーマンス、デバッグが容易)。このチュートリアルはDockerを使用してデモを行うので、すべての読者が簡単に追えるようにしています。
Q 無料のAtlasクラスターには有効期限がありますか?
A ありません。MongoDB AtlasのM0 Sandbox(512 MB)は永久無料で、有効期限はありません。ただし、90日ごとに1回ログインする必要があります。そうしないと回収される可能性があります。
Q mongoshと古いmongoシェルの違いは何ですか?
A mongoshはmongoシェルの後継です(2020年以降推奨)。mongoshはNode.jsベースで、モダンなJavaScript構文、シンタックスハイライト、エラースタックをサポートしており、開発により適しています。
Q MongoDB 7.0の後に8.0 LTSバージョンがないのはなぜですか?
A MongoDB 8.0は2024年にリリースされ、現在LTS候補として進化しています。このチュートリアルは安定した7.0 LTSバージョンに基づいており、ほとんどの本番シナリオをカバーしています。
Q 本番環境でDockerを使用してMongoDBを展開できますか?
A はい、ただし次の点に注意してください:(1)ホストネットワークまたは静的IPを使用;(2)データボリュームは物理マシンにマウントする必要がある;(3)リソース制限を設定(--memory --cpus);(4)本番環境にはKubernetes + StatefulSetを推奨。
Q 接続文字列の+srvはどういう意味ですか?
A mongodb+srv://はMongoDB Atlasで使用されるDNS SRVレコード形式で、クラスターノードを自動的に検出します。mongodb://は従来の形式で、ホストとポートを手動で指定する必要があります。
Q 会社のイントラネットでデプロイするにはどうすればよいですか(Atlasにアクセスできない場合)?
A Dockerまたはネイティブインストールを使用して、ポート27017で独自のMongoDBインスタンスを構築し、ファイアウォールを設定してアプリケーションサーバーのIPからのアクセスを許可してください。Atlasクラウドサービスは必要ありません。

📖 まとめ


📝 練習問題

  1. 基礎問題(⭐):Dockerを使用してMongoDB 7.0コンテナを起動し、ポート27017をマッピングし、mongoshで正常に接続してdb.runCommand({ ping: 1 })を実行してください。

  2. 基礎問題(⭐):MongoDB Atlasで無料のM0クラスターを作成し、IPホワイトリスト(0.0.0.0/0)とデータベースユーザーを設定し、mongoshでAtlasに接続してください。

  3. 応用問題(⭐⭐):mongoshでuse shopdbdb.products.insertOne({...})db.products.find().pretty()を実行し、データベースとコレクションの暗黙的作成メカニズムを理解してください。

  4. 応用問題(⭐⭐):Node.jsスクリプトping-test.jsを書き、mongodbネイティブドライバーを使用してローカルMongoDBインスタンスに接続し、pingコマンドを実行して応答時間を出力してください。

  5. 応用問題(⭐⭐):VSCodeにMongoDBプラグインをインストールし、Atlasクラスターに接続し、Playgroundsで集計クエリdb.users.aggregate([{$group: {_id: '$age', count: {$sum: 1}}}])を実行してください。

  6. チャレンジ(⭐⭐⭐):Docker Composeを使用して3ノードMongoDBレプリカセットを起動し(公式ドキュメントを参照)、ユーザーを自動作成してデータを初期化するinitスクリプトを設定し、レプリカセットの状態rs.status()を確認してください。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%