首页 / MongoDB 入门教程 / 文档模型与 BSON

MongoDB 入门教程

文档模型与 BSON

本教程共 50 篇 · 第 2 篇 · 更新于 2026-07-30 · 约 5 分钟阅读

MongoDBMongoDB 入门教程BSONJSON文档模型

2. 文档模型与 BSON

本节目标:理解文档长什么样、JSON 和 BSON 是什么关系,以及字段值都能有哪些形态。

2.1 文档是什么

文档(Document)是 MongoDB 里最小的数据单位,由「字段名: 值」成对组成。它和 JSON 对象很像,但底层在磁盘和内存里存的是 BSON。

2.2 JSON 与 BSON 的关系

JSON(JavaScript Object Notation)是我们写文档时看到的人类可读格式。BSON(Binary JSON)是 MongoDB 实际使用的二进制编码。

简单说:你用 JSON 写,MongoDB 用 BSON 存。BSON 在 JSON 类型基础上,增加了日期、ObjectId、Decimal128、二进制等类型。

对比JSONBSON
形态文本,人能读二进制,机器处理快
类型字符串、数字、布尔、数组、对象、null在 JSON 基础上增加日期、ObjectId、Decimal128、二进制
用途接口与书写存储与网络传输
Note

据 MongoDB 8.3 官方文档,MongoDB 将文档以 BSON 文档(BSON documents)形式存储在集合(Collection)中。

2.3 字段值的形态

一个字段的值可以是以下几种:

  • 基本类型:字符串、数字、布尔、null
  • 日期:ISODate
  • 内嵌文档:{ ... }
  • 数组:[ ... ],数组里还能再放文档
// 一个既有内嵌文档、又有数组的文档
{
  name: "张伟",
  address: { city: "北京", district: "海淀" },
  tags: ["vip", "gamer"],
  registered_at: ISODate("2024-01-15T08:30:00Z")
}

2.4 为什么用 BSON 而不是纯 JSON

BSON 带来两个实在的好处:

  • 类型更全。JSON 没有「日期」「二进制」原生类型,BSON 有,存时间和文件不丢精度。
  • 遍历更快。二进制结构让 MongoDB 不用把整块数据解析完,就能定位字段。
Tip

你平时基本感知不到 BSON,正常写 JSON 风格文档即可。只有用到日期、高精度小数时,才需要关心它。

2.5 文档和「行」的对应

如果你熟悉关系型数据库,可以这样类比:

  • 一张表 ≈ 一个集合(Collection)
  • 表里的一行 ≈ 集合里的一个文档
  • 列名 ≈ 字段名

区别在于:同一集合里的不同文档,字段可以不一样。这就是所谓「灵活 Schema(Flexible Schema)」。

Warning

灵活不等于无约束。字段名一旦写错(比如 age 写成 Age),查询就查不到。生产环境常用 Schema 校验来兜底,后面章节会讲到。