はじめに
MongoDB は、MySQL・MariaDB・PostgreSQL などと同じ データベース管理システムの一種だ。しかしその内部構造はリレーショナルデータベース(RDB)とは大きく異なる。最大の違いは、MongoDB はテーブルではなく “ドキュメント(Document)” を使う NoSQL データベースであるという点だ。
この記事では、MongoDB の基本概念・データ構造・コレクション・クエリ方法(NoSQL)を、RDB に慣れた人でも直感的に理解できるように丁寧に整理する。
1. MongoDBはどんなデータベースか?
MongoDB は NoSQL データベースに分類され、「テーブル」「行」「列」といった構造ではなく、JSON のような “ドキュメント” を使ってデータを保存する。
とはいえ、データを保存し、必要な時に取り出せる点は RDB と同じである。
違うのは「保存形式」と「構造の柔軟さ」だ。
2. ドキュメント(Document)とは?
RDB の “1レコード” に相当するものが ドキュメント。
MongoDB ではドキュメントは キーと値の組み合わせ(辞書型 / 連想配列) で表現される。
例:社員情報を保存するドキュメント
{
"_id" : ObjectId("5f077332de2cdf808d26cd74"),
"username" : "lphillips",
"first_name" : "Logan",
"last_name" : "Phillips",
"age" : "65",
"email" : "lphillips@example.com"
}
特徴
-
_idは自動生成される主キー(ObjectId) - 任意のフィールドをいくつでも追加できる
- スキーマレス(柔軟)
RDB のように “列を先に定義する必要がない” のが最大の利点だ。
3. コレクション(Collection)とは?
複数のドキュメントは コレクション にまとめられる。
RDB でいう “テーブル” に相当する。
例:HR(人事)アプリの場合
-
peopleコレクション
→ 社員情報をまとめて保存する場所
図示すると以下の構造になる:
4. データベース(Database)
複数のコレクションは Database にグループ化される。
これは RDB でも MongoDB でも同じ概念だ。
5. MongoDBのクエリ言語(NoSQL)
MongoDB は SQL を使わず、**独自のクエリ形式(NoSQL)**を採用している。
クエリは「連想配列(辞書)」の形式で書く。
SQL の WHERE 句と同じように条件を指定してデータを絞り込む。
6. データを検索してみる(クエリの基本)
次の3つの社員ドキュメントがあるとする:
例1:last_name が "Sandler" のドキュメントを取得
['last_name' => 'Sandler']
→ サンドラーさんだけが返る。
例2:gender が "male" かつ last_name が "Phillips"
['gender' => 'male', 'last_name' => 'Phillips']
→ 最初のドキュメントのみが条件一致。
例3:age が 50 未満の人を検索
['age' => ['$lt' => '50']]
$lt は “less than(より小さい)”
→ 2つ目と3つ目のドキュメントが返る。
7. MongoDBの演算子
条件式では $演算子 を使う。
| 演算子 | 説明 |
|---|---|
$gt |
より大きい |
$lt |
より小さい |
$gte |
以上 |
$lte |
以下 |
$ne |
等しくない |
$in |
配列に含まれる |
$and |
AND 条件 |
$or |
OR 条件 |
公式一覧:https://www.w3schools.com/mongodb/mongodb_query_operators.php
MongoDB のクエリは
「辞書形式で条件を書く」=学習コストが低い
というのが大きな強みだ。
まとめ
MongoDB の特徴をまとめると:
- データを JSON のようなドキュメントで保存
- テーブルではなくコレクション単位で管理
- スキーマレスで柔軟(後から項目追加OK)
- NoSQL形式で条件検索(SQLのWHEREに対応)
- Web・モバイル・ログ収集など現代アプリと相性抜群
RDB の “構造の堅さ” より、
MongoDB は 柔軟性・スピード・スケーラビリティ を優先するケースで選ばれる。


