MongoDB もんごでぃーびー
MongoDBドキュメントDBNoSQLJSONBSONスキーマレス
MongoDBって普通のDBと何が違うの?
簡単に言うとこんな感じ!
MongoDBはJSONみたいな形でデータを保存する「ドキュメントDB」だよ!普通のDBがExcelの表みたいな形でデータを入れるのに対し、MongoDBはネストした構造(入れ子)でそのまま保存できるんだ。スキーマ(定義)を事前に決めなくていい柔軟さが特徴だよ。
MongoDBとは
MongoDB は、データをJSONに似た形式(BSON:Binary JSON)の「ドキュメント」として保存する、オープンソースのドキュメント指向NoSQLデータベースです。2009年にリリースされ、NoSQLの代表格として広く普及しています。
リレーショナルDBのテーブル=行・列の構造と異なり、MongoDBはコレクション(テーブルに相当)の中にドキュメント(行に相当)を格納し、各ドキュメントは自由に構造を変えられます。
MongoDBの基本概念
| RDBの概念 | MongoDBの対応概念 |
|---|---|
| データベース | データベース |
| テーブル | コレクション |
| 行(レコード) | ドキュメント |
| 列(カラム) | フィールド |
| 主キー | _id フィールド |
| JOIN | $lookup(集計パイプライン) |
ドキュメント例
{
"_id": "ObjectId('...')",
"name": "山田太郎",
"email": "yamada@example.com",
"orders": [
{ "product": "ノートPC", "price": 120000 },
{ "product": "マウス", "price": 3000 }
],
"address": {
"city": "東京",
"zip": "100-0001"
}
}
RDBでは注文をordersテーブルに分けてJOINするが、MongoDBでは埋め込みドキュメントで一括管理可能。
MongoDBが適するケース
- データ構造が頻繁に変わるアジャイル開発初期
- ユーザーごとに異なる属性を持つコンテンツ(ECサイトの商品カタログ等)
- JSONそのままで保存・取得したいWebAPI開発
- リアルタイムデータ分析・集計
歴史と背景
- 2009年:MongoDB Inc.(旧10gen)がMongoDBをリリース
- 2010年代:MEAN/MERNスタック(MongoDB・Express・Angular/React・Node.js)で普及
- 2021年:MongoDB AtlasがフルマネージドDBaaSとして急成長