简述:
json,给人看的,文档格式,可读
bson,给机器看的,二进制格式(所以快,内存占用少),不可读
BSON 和 JSON 的区别
|------------|--------------------------------------------------|---------------------------------------|
| 对比项 | JSON | BSON |
| 全称 | JavaScript Object Notation | Binary JSON |
| 格式 | 文本格式(字符串) | 二进制格式 |
| 可读性 | 人类可读 | 机器可读(不可直接阅读) |
| 数据类型支持 | 有限(string, number, boolean, null, object, array) | 更丰富(支持日期、二进制、ObjectId、正则、Timestamp 等) |
| 性能 | 解析慢,存储体积大 | 解析快,支持高效序列化/反序列化 |
| 用途 | 数据传输(如 API 接口) | 数据存储与内部通信(MongoDB 使用) |
✅ 例子:
// JSON(纯文本)
{
"name": "张三",
"age": 30,
"createdAt": "2025-01-01T00:00:00Z" // 只能是字符串
}
// BSON(二进制表示,逻辑上等价于)
{
"name": "张三",
"age": 30,
"createdAt": ISODate("2025-01-01T00:00:00Z"), // 真正的日期类型
"_id": ObjectId("507f1f77bcf86cd799439011") // 特有类型
}
🎯 关键区别总结:
- BSON 是 JSON 的"超集" + 二进制优化版本。
- MongoDB 存储的是 BSON,网络传输也是 BSON,但你写代码时通常用 JSON 风格操作,驱动会自动转换。
- 支持更多类型,比如:
-
ObjectId
:12 字节唯一 IDDate
:真正的日期对象BinData
:二进制数据(如图片)Regex
:正则表达式对象
💡 类比:JSON 像 .txt
文件,BSON 像 .docx
------ 功能更强、结构更紧凑、机器处理更快。