0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【セキュリティ】MongoDB入門:ドキュメント指向でデータを扱うNoSQLデータベース

Posted at

はじめに

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 コレクション
    → 社員情報をまとめて保存する場所

図示すると以下の構造になる:

MongoDB Collection


4. データベース(Database)

複数のコレクションは Database にグループ化される。
これは RDB でも MongoDB でも同じ概念だ。

MongoDB Collection


5. MongoDBのクエリ言語(NoSQL)

MongoDB は SQL を使わず、**独自のクエリ形式(NoSQL)**を採用している。
クエリは「連想配列(辞書)」の形式で書く。

SQL の WHERE 句と同じように条件を指定してデータを絞り込む。


6. データを検索してみる(クエリの基本)

次の3つの社員ドキュメントがあるとする:

MongoDB Collection


例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 は 柔軟性・スピード・スケーラビリティ を優先するケースで選ばれる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?