【问题标题】:Mongoose - flexible field猫鼬 - 灵活的领域
【发布时间】:2013-05-03 20:04:59
【问题描述】:

我是 NOSQL 和 MongoDB 的新手,我正在使用 NodeJS 和 Mongoose 构建一个应用程序,并且我正在为一个新集合构建一个 mongoose 模式。

该集合的文档将包含一些标准字段(id、创建日期、用户等),但随后我需要存储其他内容,这是一个“数据”字段,必须包含不同的数据,具体取决于文件。该值有时是简单的文本,有时它会有很多键/值对。

我想知道这种存储需求的最佳解决方案是什么:

-仅创建一个String类型的“数据”字段,然后将不同类型的数据放入其中(文本用于简单值,字符串化对象用于更复杂的数据)

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

-别的东西

这种事情的最佳做法是什么?

【问题讨论】:

  • 我会说使用无模式类型而不是字符串化数据。也就是说,有些人会说动态模式是 mongodb 的强项,有些人会说它是不可维护和不好的做法。我会把这个讨论留给其他人,但如果你要使用无模式类型,请阅读the docs 了解一些实际的缺点(例如没有验证和失去自动检测更改的能力)。

标签: node.js mongodb mongoose


【解决方案1】:

尝试使用混合模式类型,我认为这就是您要寻找的: http://mongoosejs.com/docs/schematypes.html

【讨论】:

    【解决方案2】:

    这个:

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

    将架构的标准字段标记为required: true,其余部分可选。这样您就可以获得所需的灵活性,而不会失去 Mongoose 的验证、转换和更改检测的优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多