我在考虑一个表单创建器应用程序。用户可以设计自己的表单,他们可以添加他们想要的字段。
例如,一个用户可以提交一个雇用表单,在该表单中可能包括一些字段,如"工作经验"、"教育程度"等。他提供这些字段的一些选择选项,然后当他发布该表单时,求职者提交该表单。然后他可以查看结果列表,并且可能他需要通过"工作经验"来过滤人员。所以这意味着他刚添加到表单中的字段需要我索引。
在这种情况下,如何在mongodb中设计模式?
到目前为止,我可以成像是一个Forms
集合,具有一些普通字段,如作者、日期、位置等,还有一个content
字段,所有用户定义的表单数据都作为JSON对象存储在该字段中。
我将在上面的示例中以这种方式添加索引
db.forms.createIndex({"content.workexp" : 1})
我的问题是:
1.如果我真的喜欢这个,那对立面是什么?
1.如果我没有索引自定义字段内,发生了什么事到其他用户的自定义表单数据,没有这样的字段?
1.有没有更好的办法来达到这个目标呢?
(更新)
我将设计类似于this,因为forms
记录表单模板,并将其Map到另一个集合(通过entity
字段)在我的示例数据中,形式为resume
的第一记录Map到resumes
集合,这意味着定义forms
的第一记录中的结构字段的新恢复数据,最后将存储在resumes
集合中。
到目前为止看起来还不错,但是,因为一个表单记录Map到一个集合,会产生大量的集合。另一个问题是,如果两个记录Map到同一个集合,会使结构不能保持一致。
这个设计是可以与小企业自己,但如果我的purporse是一个平台,每个机构创造无限的形式,这将是一个问题。
1条答案
按热度按时间2wnc66cl1#
我不能肯定这是否符合你要求,但我的意见是,
我假设您的用户是公司/组织,并且该功能中会有一些问题
its needs form builders
required
和/或optional
的表单如果我们看一下大型平台,比如JIRA Software
这是他们一个小复制品:
将存在3种模式:
fields, forms, tables
fields
集合这应该是公共的(任何人都可以看到),forms
集合在FORM API中,将需要创建2个集合
forms
和fields
,原因是:允许用户创建任何类型的字段(因为任何字段都将是模板)因此,我们只需要检查字段长度,如果字段长度=== 0,则创建新的
fields
,否则为fields = [ ObjectId(id)]
tables
集合作为模板表单通过在表和表单中使用companyId,我们已经减少了map函数。请告诉我您的意见