参考答案:
在 MongoDB 中,集合(Collection) 是存储文档的容器,类似于传统关系型数据库中的 表(Table)。集合是一个存储相关文档的结构化单位,而文档则是集合中的数据项。MongoDB 中的集合没有严格的模式要求,意味着集合中的文档可以具有不同的结构。
无模式结构(Schema-less):
name
和 age
,而其他文档则可能只有 name
字段,没有 age
字段。这样可以灵活地应对数据结构的变化。存储文档:
users
的集合中,可能包含如下文档:
1{ "_id": 1, "name": "Alice", "age": 30 } 2{ "_id": 2, "name": "Bob", "age": 25 }
集合的唯一标识符 _id
:
_id
字段,作为文档的唯一标识符。集合中的文档通过 _id
字段来进行唯一标识,默认情况下,MongoDB 会自动为每个文档生成一个唯一的 ObjectId
作为 _id
字段。{ "_id": ObjectId("60c72b2f5b5f7e2d6a1b2c0d"), "name": "John", "age": 30 }
集合无需预定义结构:
address
字段,而其他文档则不包含这个字段。集合中的文档顺序和关系:
集合的创建:
db.createCollection()
命令可以显式创建集合:
1db.createCollection("users")
特性 | MongoDB 集合 | 关系型数据库表 |
---|---|---|
存储单位 | 存储文档(类似 JSON 格式) | 存储行(记录) |
结构要求 | 无模式(Schema-less),文档结构灵活 | 固定的结构,所有行必须遵循相同的表结构 |
字段类型 | 每个文档可以有不同的字段类型 | 每列字段的数据类型在表中是统一的 |
关系支持 | 没有外键和表之间的关系 | 支持外键、主键、表之间的关系 |
文档顺序 | 无固定顺序,除非通过查询排序 | 行的顺序固定(在没有显式排序的情况下) |
索引 | 可以为集合中的字段创建索引 | 为表的列创建索引 |
创建方式 | 自动创建,或手动创建集合 | 必须显式定义并创建表 |
假设我们有一个用于存储用户信息的集合 users
。集合中的文档可能如下所示:
文档 1:
1{ "_id": 1, "name": "Alice", "age": 30, "email": "alice@example.com" }
文档 2:
1{ "_id": 2, "name": "Bob", "age": 25 }
文档 3:
1{ "_id": 3, "name": "Charlie", "age": 35, "email": "charlie@example.com", "address": { "city": "New York", "state": "NY" } }
在这个例子中,users
集合中有三个文档,其中每个文档具有不同的字段。Alice
和 Charlie
有 email
字段,而 Bob
没有。Charlie
还包含了一个嵌套的 address
文档。这种灵活的数据结构使得 MongoDB 特别适合于存储和处理多样化的数据。
最近更新时间:2024-12-23