10-理解文档
1.3.2 理解文档
在MongoDB数据库中,文档表示单个实体的数据,而集合包含一个或多个相关的文档。MongoDB和SQL的一个主要差别在于文档不同于行:行数据是扁平的,每列都包含行中的一个值,而在MongoDB中,文档可包含嵌入的子文档,提供的数据模型与应用程序的要求更一致。
事实上,MongoDB中表示文档的记录是以BSON(一种轻量级二进制JSON)的方式存储的。BSON是一种轻量级二进制JSON,使用对应于JavaScript属性/值对的字段/值对来定义文档中存储的值。几乎不需要做任何转换,就能将MongoDB记录转换为您可能在应用程序中使用的JSON字符串。
例如,MongoDB中文档的结构可能类似于下面这样,其中包含字段name、version、languages、admin和paths:
{
name: "New Project",
version: 1,
languages: ["JavaScript", "HTML", "CSS"],
admin: {name: "Brad", password: "****"},
paths: {temp: "/tmp", project:"/opt/project", html: "/opt/project/html"}
}
注意到在这个文档结构中,包含类型为字符串、整数、数组和对象的字段/属性,就像JavaScript对象一样。表1.1列出了BSON文档支持的字段值数据类型。
字段名不能包含空格、句点(.)和美元符号($)。另外,字段名_id保留用于存储对象ID(Object ID)。字段_id包含系统中独一无二的ID,这种ID由下列几部分组成:
- 从新纪元开始的秒数(4字节)。
- 3字节的机器标识符。
- 2字节的进程ID。
- 3字节的计数器(该计数器的起始值是随机的)。
MongoDB文档最大不能超过16MB,这旨在避免查询占用太多RAM或频繁访问文件系统。文档也许根本不会接近这样的规模,但设计包含文件数据的复杂类型时必须牢记这种最大文档限制。