ドキュメントはMongoDBの基本的なデータ単位であり、JSON風のオブジェクト(BSONとして保存)です。フィールドと値で構成されます。コレクションはドキュメントのグループです(テーブルに類似)。ドキュメントは柔軟で、同じコレクション内のドキュメントは異なる構造を持つことができます。
ドキュメント
{
: (),
: ,
: ,
: ,
: {
: ,
:
},
: [, ],
: ()
}
ドキュメントはMongoDBの基本的なデータ単位であり、JSON風のオブジェクト(BSONとして保存)です。フィールドと値で構成されます。コレクションはドキュメントのグループです(テーブルに類似)。ドキュメントは柔軟で、同じコレクション内のドキュメントは異なる構造を持つことができます。
{
: (),
: ,
: ,
: ,
: {
: ,
:
},
: [, ],
: ()
}
ドキュメントはネストされたオブジェクト、配列、様々なタイプを保持でき、構造化されたデータを自然に表現します。すべてのドキュメントは一意の**_id**フィールド(提供されない場合はObjectIdとして自動生成)を持ち、プライマリキーとして機能します。
// a collection "users" holds user documents
db.users.insertOne({ name: "Ann", age: 30 });
db.users.find(); // query the collection
// collections are created automatically on first insert (no schema required)
db.products.insertOne({ name: "Phone", price: 999 }); // creates "products"
コレクションは関連するドキュメントをグループ化します。SQLテーブルとは異なり、コレクションはデフォルトでは固定スキーマを強制しません — 自動的に作成されます。ドキュメントは可変です。
// documents in the SAME collection can have DIFFERENT fields
db.users.insertOne({ name: "Ann", age: 30 });
db.users.insertOne({ name: "Bob", email: "[email protected]", premium: true });
// → both valid in the users collection (no fixed columns)
この柔軟性は進化するスキーマと多様なデータに適しています。しかし、アプリケーションが構造的なバリエーションを処理する必要があります(一貫性が必要な場合はスキーマ検証を追加できます)。
ドキュメントとコレクションはMongoDBの基本的な構成要素であるため、MongoDBの作業には必須です。
ドキュメントがネストされたオブジェクトと配列を保持でき、一意の**_id**プライマリキーを持つ柔軟なJSON風(BSON)オブジェクトであるということを知ることは、MongoDBでデータがどのように構造化されるかの基礎であり、単一のドキュメント内で構造化された、ネストされたデータを表現できる機能(関連テーブルに分散させるのではなく)はドキュメントモデルの主要な特性です。
コレクション(ドキュメントのグループ、テーブルに類似しますがデフォルトではスキーマレス、自動的に作成される)について理解することは、データを整理するために必要です。
重要なのは、柔軟なスキーマ — 同じコレクション内のドキュメントが異なるフィールドを持つことができる — MongoDBの定義的な特性で、実際の影響があります。柔軟性を提供(進化するスキーマ、多様なデータ、マイグレーションなしの迅速な開発に適している)しますが、アプリケーションは構造的なバリエーションを処理する必要があり、一貫性が必要な場合はスキーマ検証を追加できます。
この柔軟性はMongoDBの大きな利点であり、同時に慎重に管理する必要があるものです。
ドキュメントとコレクションはMongoDBのコアデータ構造であるため(すべての作業はコレクション内のドキュメントに関わります)、そしてそれらの構造、_idフィールド、ドキュメントモデルのネスト機能、そして特に柔軟なスキーマ性質(その利点と考慮事項)の理解が基本的であるため、ドキュメントとコレクションの理解は本質的で基本的な知識 — データベースを使用し、それが厳密なリレーショナルテーブルとどのように異なるかを理解するための出発点です。