MongoDB 是一款开源、高性能、无模式的文档型数据库,属于 NoSQL 家族中最接近关系型数据库(如 MySQL)的成员。它以 BSON(Binary JSON) 作为底层存储格式,支持复杂嵌套结构,极大提升了开发效率与数据表达能力。
基本术语对照(vs MySQL)
| SQL 概念 | MongoDB 概念 | 说明 |
| Database | Database | 数据库 |
| Table | Collection | 表 → 集合 |
| Row | Document | 行 → 文档(JSON-like 对象) |
| Column | Field | 列 → 字段 |
| Index | Index | 索引 |
| Table Joins | 嵌入文档 / 引用 | 不支持 JOIN,通过内嵌文档替代 |
| Primary Key | _id 字段 |
自动为主键,类型为 ObjectId |
数据模型:以文档为核心
MongoDB 的最小存储单位是 文档(Document),本质上是一个键值对组成的 BSON 对象。例如:
{ "_id": ObjectId("6789abcd1234"), "name": "张三", "age": 28, "hobbies": ["读书", "跑步"], "address": { "city": "北京", "geo": [116.4, 39.9] } }
这种结构天然支持 嵌套对象 和 数组,非常适合表达层次化、半结构化数据。
BSON:超越 JSON 的二进制格式
BSON(Binary Serialized Document Format)是 MongoDB 的数据存储格式,兼容 JSON 并扩展了更多类型:
| 数据类型 | 描述 |
string |
UTF-8 字符串 |
ObjectId |
12 字节唯一 ID,常用于主键 |
boolean |
true / false |
array |
有序列表 |
object |
嵌套文档 |
date |
日期时间(JSON 原生不支持) |
binary data |
二进制数据(如图片、文件) |
null |
空值 |
regex |
正则表达式(如 /abc/i) |
code |
可存储 JavaScript 函数(慎用) |
注意:MongoDB Shell 中部分类型(如 32/64 位整数)会自动转为浮点数,生产环境应通过驱动程序正确处理类型。
MongoDB 的核心优势
- 高性能:嵌入式模型减少 I/O;支持多种存储引擎(WiredTiger、In-Memory 等);提供文本索引、TTL 索引、地理空间索引。
- 高可用:通过 副本集(Replica Set) 实现自动故障转移与数据冗余。
- 高扩展:原生支持 分片(Sharding),可将数据水平分布到多个节点,轻松应对 PB 级数据。
- 丰富查询:支持 CRUD、聚合管道、地理查询、全文搜索等高级功能。
总结:MongoDB 以灵活的文档模型、强大的扩展能力和丰富的查询语言,为现代应用提供了高效、可伸缩的数据存储解决方案。