【发布时间】:2013-05-03 20:04:59
【问题描述】:
我是 NOSQL 和 MongoDB 的新手,我正在使用 NodeJS 和 Mongoose 构建一个应用程序,并且我正在为一个新集合构建一个 mongoose 模式。
该集合的文档将包含一些标准字段(id、创建日期、用户等),但随后我需要存储其他内容,这是一个“数据”字段,必须包含不同的数据,具体取决于文件。该值有时是简单的文本,有时它会有很多键/值对。
我想知道这种存储需求的最佳解决方案是什么:
-仅创建一个String类型的“数据”字段,然后将不同类型的数据放入其中(文本用于简单值,字符串化对象用于更复杂的数据)
-在模型中创建我的“更复杂的数据”可能拥有的所有可能字段,并仅使用每个文档中我需要的字段
-别的东西
这种事情的最佳做法是什么?
【问题讨论】:
-
我会说使用无模式类型而不是字符串化数据。也就是说,有些人会说动态模式是 mongodb 的强项,有些人会说它是不可维护和不好的做法。我会把这个讨论留给其他人,但如果你要使用无模式类型,请阅读the docs 了解一些实际的缺点(例如没有验证和失去自动检测更改的能力)。