MongoDB 最有名的特性之一,就是灵活结构。
同一个档案柜里的档案袋,不需要完全一模一样:
db.devices.insertMany([
{
name: "温度传感器A",
type: "sensor",
battery: 82
},
{
name: "网关主机B",
type: "gateway",
ip: "192.168.1.10",
ports: [8080, 8443]
}
])这很像现实中的档案仓:
- “传感器档案袋”有电量字段
- “网关档案袋”有 IP 和端口字段
- 它们都属于设备类,但细节不同
这非常适合:
- 业务仍在迭代
- 对象存在多态形态
- 字段会逐步扩展
- 不想每次加字段都大动结构
但这里有一个极其重要的认知:
灵活结构不等于不要结构。
错误理解:
MongoDB 很灵活
= 什么都随便存
= 今天 price 是字符串,明天是数字也无所谓正确理解:
MongoDB 允许结构演进
但你的业务仍然应该有清晰模式后面讲模式设计时,你会看到:
成熟项目通常会在“灵活”之上加“约束”,例如命名规范、字段约定、模式验证。