MongoDB 入门:非关系型数据库实操,适合哪些场景?
·
前言
MySQL/PG 属于关系型数据库(RDBMS),表结构固定、强关联;MongoDB 是文档型 NoSQL 数据库,存储 JSON 格式文档,结构灵活,无需提前定义表字段。本文讲解基础概念、CRUD 实操、适用业务场景、和 MySQL 取舍对比。
一、核心基础概念(对应 MySQL 类比)
| MySQL 关系型 | MongoDB 文档型 |
|---|---|
| 数据库 database | database |
| 表 table | 集合 collection |
| 行 row | 文档 document(JSON 对象) |
| 字段 column | 键 key |
| 主键 id | _id 自动生成唯一主键 |
特点:集合无需预先定义字段,每条文档字段可以完全不同,动态扩展属性。
二、基础 CRUD 实操命令
1. 创建 / 切换数据库
use test_db
2. 插入文档
// 单条插入
db.user.insertOne({
name:"张三",
age:20,
tags:["学生","计算机"]
})
// 批量插入
db.user.insertMany([
{name:"李四",age:22},
{name:"王五",age:19}
])
3. 查询文档
// 查询全部
db.user.find()
// 条件查询
db.user.find({age:{$gt:18}})
// 分页排序
db.user.find().sort({age:1}).limit(10)
4. 更新文档
// 更新匹配第一条
db.user.updateOne({name:"张三"},{$set:{age:21}})
// 批量更新
db.user.updateMany({age:{$lt:20}},{$set:{level:1}})
5. 删除文档
db.user.deleteOne({name:"张三"})
db.user.deleteMany({age:100})
三、MongoDB 核心优势
- 结构灵活:无需提前建表、定义字段,业务迭代新增属性不用改表结构;
- 天然支持数组、嵌套对象:用户标签、商品多图、多层嵌套数据无需多表关联;
- 高写入性能:日志、埋点、海量设备上报数据写入速度快;
- 分片集群成熟,易于水平扩容,存储海量数据;
- JSON 格式存储,前后端交互无需大量转换。
四、适合使用 MongoDB 的业务场景
- 用户行为埋点、操作日志、设备上报数据;
- 商品多属性、动态扩展字段(不同商品不同参数);
- 内容平台:文章、评论、富文本内容;
- 物联网设备时序数据、传感器采集数据;
- 小程序 / APP 用户画像、标签体系;
- 临时海量中间数据,无需复杂事务关联。
五、不适合 MongoDB 的场景
- 强事务、资金、订单、对账财务系统(MongoDB 事务能力弱于 MySQL);
- 多表高频关联查询、复杂统计报表;
- 需要严格外键约束、强数据一致性的业务。
六、MongoDB vs MySQL 选型总结
- 数据结构固定、多关联、事务、金融业务 → MySQL
- 结构多变、海量写入、日志埋点、嵌套复杂 JSON 数据 → MongoDB
七、开发使用注意事项
- 核心订单、支付数据不要单独使用 MongoDB;
- 高频查询字段建立索引,避免全集合扫描;
- 超大集合定期分片,控制单集合数据量;
- 复杂多条件统计尽量同步至 MySQL 做报表分析。
更多推荐


所有评论(0)