我仍然习惯于使用无模式的面向文档的数据库,并且我想知道关于应用程序模型中的模式设计的普遍接受的做法是什么。
具体来说,我想知道在像这样保存到 mongodb 时,在应用程序模型中使用强制模式是否是一种好习惯:
{
_id: "foobar",
name: "John"
billing: {
address: "8237 Landeau Lane",
city: "Eden Prairie",
state: "MN",
postal: null
}
balance: null,
last_activity: null
}
而不是只存储这样使用的字段:
{
_id: "foobar",
name: "John"
billing: {
address: "8237 Landeau Lane",
city: "Eden Prairie",
state: "MN"
}
}
前者是我喜欢的自我描述,而后者对模型模式的可变性不做任何假设。
我喜欢第一个选项,因为它可以很容易地一目了然地看到模型使用了哪些字段,但当前未指定,但如果我想添加,更新每个文档以反映新的架构设计似乎很麻烦一个额外的字段,例如favorite_color
.
大多数资深 mongodb 用户如何处理这个问题?