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