文档 是 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 工作都是必不可少的。
知道 文档 是一个灵活的、类似 JSON 的(BSON)对象 — 能够包含嵌套对象和数组,具有唯一的 _id 主键 — 是 MongoDB 中数据如何结构化的基础,在单个文档中表示结构化、嵌套数据的能力(而不是将其分散到相关表中)是文档模型的关键特征。
理解 集合(文档的组合,类似于表,但默认无架构,自动创建)对于组织数据是必要的。
至关重要的是,理解 灵活架构 — 同一集合中的文档可以具有不同的字段 — 是 MongoDB 的定义特征,具有实际意义:它提供灵活性(适合不断演变的架构、多样化的数据和无需迁移的快速开发),但也意味着应用程序必须处理结构变化,当需要一致性时,你可以添加架构验证。
这种灵活性既是 MongoDB 的主要优势,也需要有思考地管理。
由于文档和集合是 MongoDB 的核心数据结构(你做的一切都涉及集合中的文档),并且理解它们的结构、_id 字段、文档模型的嵌套功能,特别是灵活架构性质(其优势和注意事项)对于使用 MongoDB 是基础性的,理解文档和集合是必不可少的、基础性知识 — 是使用数据库和理解它如何不同于严格的关系表的起点。