Mongoose - 灵活的字段

3
我对NOSQL和MongoDB不太了解,我正在使用NodeJS和Mongoose构建一个应用程序,并为新集合构建mongoose模式。
这个集合的文档将有一些标准字段(如id、创建日期、用户等),但我需要存储其他东西,这是一个“数据”字段,它将根据文档包含不同的数据。该值有时将是简单文本,有时将有许多键/值对。
我想知道针对这种存储需求的最佳解决方案是什么:
- 只创建一个String类型的“数据”字段,然后将不同类型的数据放入其中(对于简单值使用文本,对于更复杂的数据使用字符串化对象) - 在模型中创建我“更复杂数据”可能具有的所有可能字段,并仅在每个文档中使用我需要的字段 - 其他方法
这种情况的最佳实践是什么?

我建议使用无模式类型而不是字符串化数据。话虽如此,有些人会说动态模式是mongodb的优势,有些人会说它是不可维护和不良实践。我将把这个讨论留给其他人,但如果你要使用无模式类型,请阅读文档了解一些实际的缺点(例如没有验证和失去自动检测更改的能力)。 - Andreas Hultgren
2个回答

3

2

这个:

-在模型中创建所有可能的字段,以便我的“更复杂的数据”可以使用,并且每个文档只使用我需要的字段

将模式的标准字段标记为required: true,其余字段则保持可选。这样,您就可以获得所需的灵活性,而不会失去Mongoose验证、转换和更改检测的好处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接