前言

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 核心优势

  1. 结构灵活:无需提前建表、定义字段,业务迭代新增属性不用改表结构;
  2. 天然支持数组、嵌套对象:用户标签、商品多图、多层嵌套数据无需多表关联;
  3. 高写入性能:日志、埋点、海量设备上报数据写入速度快;
  4. 分片集群成熟,易于水平扩容,存储海量数据;
  5. JSON 格式存储,前后端交互无需大量转换。

四、适合使用 MongoDB 的业务场景

  1. 用户行为埋点、操作日志、设备上报数据;
  2. 商品多属性、动态扩展字段(不同商品不同参数);
  3. 内容平台:文章、评论、富文本内容;
  4. 物联网设备时序数据、传感器采集数据;
  5. 小程序 / APP 用户画像、标签体系;
  6. 临时海量中间数据,无需复杂事务关联。

五、不适合 MongoDB 的场景

  1. 强事务、资金、订单、对账财务系统(MongoDB 事务能力弱于 MySQL);
  2. 多表高频关联查询、复杂统计报表;
  3. 需要严格外键约束、强数据一致性的业务。

六、MongoDB vs MySQL 选型总结

  1. 数据结构固定、多关联、事务、金融业务 → MySQL
  2. 结构多变、海量写入、日志埋点、嵌套复杂 JSON 数据 → MongoDB

七、开发使用注意事项

  1. 核心订单、支付数据不要单独使用 MongoDB;
  2. 高频查询字段建立索引,避免全集合扫描;
  3. 超大集合定期分片,控制单集合数据量;
  4. 复杂多条件统计尽量同步至 MySQL 做报表分析。

更多推荐