MongoDB
https://gyazo.com/7893f47d9ecf8f39ae6529f3f0b3fe88
gpt-5.icon
伝統的なリレーショナルデータベース(RDBMS)とは異なり、固定スキーマのテーブルを使わず、柔軟な構造でデータを保存できます。
🧱 基本構造
MongoDBのデータ構造は以下のような階層になっています:
code:_
Database > Collection > Document
table:_
概念 RDBでの対応 説明
Database データベース 複数のコレクションを含む
Collection テーブル 同種のドキュメントの集合
Document 行(レコード) JSON形式(BSON)で保存されるデータ
例:
code:json
{
"name": "Taro",
"age": 28,
}
このようなドキュメントを users コレクションに保存できます。
⚙️ 特徴
1. スキーマレス
各ドキュメントでフィールド構造が異なっても問題ありません。
→ アプリケーションの進化に合わせて柔軟にフィールドを追加・変更できます。
内部的にはJSONに似た形式(BSON)でデータを保存しており、
型(Date, ObjectId, Binaryなど)を保持したまま高速にアクセス可能です。
3. 強力なクエリ言語
JavaScript風の構文でクエリを記述できます。
code:js
db.users.find({ age: { $gt: 25 } }, { name: 1, _id: 0 });
4. インデックス・集約機能
単一フィールド・複合・テキスト・地理空間インデックスをサポート
SQLの GROUP BY のような集計も aggregate() パイプラインで可能
code:js
db.orders.aggregate([
{ $group: { _id: "$status", total: { $sum: "$amount" } } }
]);
5. スケーラビリティ
水平スケール(Sharding) に強く、大量データや高負荷に対応
レプリカセットによる 冗長化・自動フェイルオーバー も標準装備
🧩 代表的なユースケース
Webアプリのユーザー情報、設定データ
IoTセンサーの時系列データ
ログ・監査データの蓄積
柔軟なスキーマが求められるプロトタイピングフェーズ
🔍 MongoDB vs RDBの比較
table:_
項目 MongoDB RDB
データ形式 JSON/BSON テーブル(行・列)
スキーマ 柔軟(スキーマレス) 固定(スキーマ定義必須)
トランザクション 複数ドキュメントでも対応可(4.0以降) 標準
スケール 水平スケールが容易 垂直スケールが主
クエリ JavaScriptライク SQL
🧠 開発者目線でのポイント
React/Next.jsやTypeScriptと組み合わせる場合、
Mongoose(Node.js ODM)を使うとスキーマ定義+型安全に扱える
Next.jsのRoute HandlerやAPI Routesからmongodb公式ドライバを直に使う方法もあり
MongoDB Atlas(マネージドサービス)を使うとAWS/Azure/GCP上で簡単にデプロイ可能
A truly Open Source MongoDB alternative