全书目录

第十九篇:MongoDB 完全指南 —— 弹性档案仓宇宙

第四章:灵活结构 —— 档案袋可以因对象而异

1 分钟 245 字 第 355 / 962 个阅读单元

MongoDB 最有名的特性之一,就是灵活结构

同一个档案柜里的档案袋,不需要完全一模一样:

javascript
db.devices.insertMany([
  {
    name: "温度传感器A",
    type: "sensor",
    battery: 82
  },
  {
    name: "网关主机B",
    type: "gateway",
    ip: "192.168.1.10",
    ports: [8080, 8443]
  }
])

这很像现实中的档案仓:

  • “传感器档案袋”有电量字段
  • “网关档案袋”有 IP 和端口字段
  • 它们都属于设备类,但细节不同

这非常适合:

  • 业务仍在迭代
  • 对象存在多态形态
  • 字段会逐步扩展
  • 不想每次加字段都大动结构

但这里有一个极其重要的认知:

灵活结构不等于不要结构。

错误理解:

text
MongoDB 很灵活
= 什么都随便存
= 今天 price 是字符串,明天是数字也无所谓

正确理解:

text
MongoDB 允许结构演进
但你的业务仍然应该有清晰模式

后面讲模式设计时,你会看到:
成熟项目通常会在“灵活”之上加“约束”,例如命名规范、字段约定、模式验证。