MongoDBを使用する上での最初のステップは、MongoDBの基本的な概念とデータモデル(データ構造)を理解し、データがどのように格納されるかを知ることです。実際、MongoDBはMySQLに非常に似ているため、MySQLを知っている人はMongoDBの学習に全く問題がありません。

MongoDBの基本的な概念

データベース

MongoDBデータベースはMySQLデータベースと同じです。

コレクション

MongoDBのコレクションは、ドキュメントデータのコレクションを指し、MySQLのテーブルのコンセプトに類似しています。

ドキュメント

MongoDBのドキュメントは、MySQLのテーブル内のデータ行に類似し、複数のフィールドから構成されたJSON形式のデータであり、MongoDBのドキュメント構造は非常に柔軟です。

フィールド

MongoDBのドキュメントフィールドは、MySQLのテーブルのフィールドの概念に類似し、各フィールドにはそれぞれのデータ型があります。

インデックス

MongoDBのインデックスはMySQLのインデックスと類似し、クエリの効率を向上させることを目的としています。

集計

MongoDBの集計の概念は、MySQLのGroup by/Count/Sumの集計分析と類似し、データの統計分析に使用されます。

MongoDBとMySQLの概念の比較

MYSQL MongoDB
データベース データベース
テーブル コレクション
ドキュメント
ドキュメントフィールド
インデックス インデックス
集計(例:group by) 集計

基本的に、MongoDBの概念はMySQLと一致し、そのためMongoDBは関係データベース(NoSQL)において、最も類似した非関係データです。

MongoDBドキュメントデータ

ドキュメントは単純に複数のフィールドで構成されたJSON構造です。MongoDBで開発する際、焦点は主にどのようにドキュメント構造を設計するかに置かれ、これはMySQLを使用する際のテーブル構造を設計することと似ています。

MongoDBドキュメントデータの例:

{
  "_id": "5cf0029caff5056591b0ce7d",
  "firstname": "Jane",
  "lastname": "Wu",
  "address": {
    "street": "1 Circle Rd",
    "city": "Los Angeles",
    "state": "CA",
    "zip": "90404"
  },
  "hobbies": ["surfing", "coding"]
}

これは任意の深く入れ子になったJSON構造であり、MySQLのテーブル構造では実現できないものです。_idフィールドはドキュメントの主キーとして機能し、特定の値を指定しない場合、MongoDBは一意の値をランダムに生成します。

MongoDBのデータ構造とMySQLのテーブルとの最大の違いは、MongoDBがドキュメントの構造を事前に定義する必要がないことです。MongoDBでは、事前にスキーマを定義する必要がなく、JSONデータを直接コレクションに挿入することができます。MongoDBのコレクションにJSONデータを書き込むたびにフォーマットを異なるものにすることができ、フィールドを自由に追加または削除することができます。

注意: MongoDBのドキュメント構造は非常に柔軟で、各エントリのフォーマットがコレクション内で異なることがありますが、実際のアプリケーションでは、通常、コレクション内のデータ構造は均一です。さもないと、コレクション内の各エントリの形式が異なる場合、取得されるデータの形式が毎回わからなくなり、保守が困難になります。