我是MongoDB的新手,但我正在考虑解决这个问题:
我的应用程序有一个动态表单构建器,允许用户在表单上添加动态字段。表单上的字段都没有修复或静态。
用户可以在表单上添加任意数字和任何类型的字段,如文本字段,下拉列表或日期字段,并保存表单。
我相信由于它的动态存储和字段不是静态的,因此Oracle DB无法用于存储。 可以使用Mongo DB进行此类存储并获取数据吗?
如何将数据存储在Mongo DB中并获取以显示表单。
提前致谢!
答案 0 :(得分:2)
MongoDb是基于文档的数据库,如您所述,它没有列或字段限制。您可以将动态字段放入对象并将其保存到同一集合中。
例如
Person: {
name: '',
Contacts: [ contact 1, contact 2]
}
您也可以添加更多字段,例如您可以向其添加电子邮件
Person:
{ name: '', contacts: [], email: ''}
您现在也可以将其保存在Person Collection中。只需使用javascript对象并添加新的键和值并保存即可。
person.email = 'new value';
获取它们时,您可以迭代对象上的键并再次将值显示到前端
for (var key in person) {
// do something with key
}
答案 1 :(得分:1)
是的,MongoDB可以做到这一点。表示此类表单的文档可能如下所示:
{
tile: "A simple customer survey",
creator: "Philipp",
created: ISODate("2014-04-24T16:59:42.389Z"),
questions: [
{
question: "How old are you?",
input: "number"
},
{
question: "Do you like our products?",
answers: [
"Yes",
"No",
"Maybe"
]
},
{
question: "Which aspects of our products do you like?",
multiple: true,
answers: [
"color",
"shape",
"material",
"price",
"does not explode often"
]
}
]
}
请注意,“questions”数组中的条目都具有不同的字段组合。处理这对MongoDB来说完全没问题,因为它没有为集合中的文档强制执行一致的模式。