首页 / MongoDB 入门教程 / MongoDB 简介:文档数据库与 NoSQL

MongoDB 入门教程

MongoDB 简介:文档数据库与 NoSQL

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

MongoDBMongoDB 入门教程NoSQL文档数据库关系型数据库对比

1. MongoDB 简介:文档数据库与 NoSQL

本节目标:搞懂 MongoDB 是什么、NoSQL 分哪几类、它和关系型数据库差在哪,以及什么场景适合用它。

1.1 什么是 MongoDB

MongoDB 是一个文档数据库(Document Database),用类似 JSON 的「文档(Document)」来存数据。文档由一个个字段和值组成,写起来和你代码里的对象很像。

我刚接触它时最大的感受是:终于不用先建表、定字段类型了。一条记录长这样:

// 一个用户文档(document)
{
  _id: ObjectId("507f1f77bcf86cd799439011"),
  name: "张伟",
  age: 28,
  city: "北京",
  tags: ["vip", "gamer"]
}

注意字段值可以是字符串、数字、数组,甚至还能再嵌一个文档。这种灵活度是它和关系型数据库最直观的区别。

Note

据 MongoDB 8.3 官方文档,MongoDB 是一个「fully-transactional operational database」,既支持灵活的文档模型,也支持多文档 ACID 事务。

1.2 什么是 NoSQL

NoSQL 不是「不要 SQL」,而是「Not Only SQL(不只是 SQL)」。它泛指一类不按传统关系表来组织数据的数据库。

传统关系型数据库(Relational Database)用「表 + 行 + 列」存数据,表结构要提前定死。NoSQL 则放宽了这些约束,常用来应对海量数据、高并发和频繁变动的结构。

1.3 NoSQL 的四大类

NoSQL 家族主要分四类,各自擅长不同的场景:

类型中文名数据形态典型代表
键值(Key-Value)键值存储一个键对应一个值Redis
文档(Document)文档数据库类 JSON 的文档MongoDB
列族(Column-Family)列族存储按列族组织的大表Cassandra
图(Graph)图数据库节点与关系Neo4j

MongoDB 属于其中的「文档数据库」这一类。

1.4 文档库 vs 关系型数据库

说白了,最大的差别在「结构怎么放」。

  • 关系型:订单和用户信息分两张表,靠外键(Foreign Key)关联,查询要连表(JOIN)。
  • 文档型:常把相关信息嵌进同一个文档,省去了连表,读起来更快。
对比点关系型数据库MongoDB
数据单位行(Row)文档(Document)
表结构固定 Schema灵活 Schema
关联关系外键 + JOIN嵌入(Embed)或引用(Reference)
扩展方式多为纵向扩展原生支持分片横向扩展
Tip

灵活不代表「随便存」。生产里仍然要设计好文档结构,后面「文档结构」章节会细讲。

1.5 核心能力一览

除了文档模型,MongoDB 还内置了几样常被用到的能力:

  • 高可用(High Availability):通过副本集(Replica Set)自动故障转移。
  • 横向扩展(Horizontal Scaling):通过分片(Sharding)把数据分布到多台机器。
  • 聚合分析(Aggregation):一条管道就能做分组、统计。
  • 混合检索:全文检索、地理空间、向量检索都能在同一库里做。

1.6 适用场景

MongoDB 适合这些场景:

  • 数据结构经常变,比如快速迭代的互联网产品。
  • 需要存半结构化或嵌套数据,如用户画像、商品属性。
  • 要水平扩展(Sharding)扛住大数据量和高并发。
  • 需要地理空间、全文检索、聚合分析等混合能力。
Warning

如果你的业务强依赖多表事务、复杂连表和严格一致性(如银行核心账务),关系型数据库往往更顺手。选型章节会客观对比,不贬低任何一方。

上一篇
已经是第一篇啦
下一篇
文档模型与 BSON