我在 Ruby on Rails 项目中使用 MongoModel gem,它工作正常。只要您严格遵循模型中定义的结构,就可以正常工作,因此基本上使用 MongoDB 作为具有模式的数据库。但是,从某种角度来看,MongoDB 的优点之一是它是一个无模式数据库。我想利用它,向文档中添加随机字段,就像在 mongo shell 中一样。
怎么做?有办法吗?
更新:
我试图更清楚地说明我为什么要问这个问题,尤其是在回复 zero.zero.seven 和 j03w 的评论时。倒不是我懒得去想一个结构,而是我想利用Mongo这个优秀的特性,灵活性。
我以前在 MS SQL 和 .Net 上做过类似的事情。部分数据库的结构是在定义表单而不是表的 XML 文件中定义的。表单的值存储在垂直结构中,例如,当前项目实例的 ID 和表单上字段的 ID,所有整数都到“整数”表,字符串到“字符串” “ 桌子。这给了我灵活性:如果有人发现他们需要新的信息来完成他们的工作,他们只需要编辑 XML 并在其中添加新字段。它们显示在表单上并存储在垂直 DB 结构中。但当然它也有它的缺点:更多的记录,不太清晰的数据库,表结构不反映你的信息结构。性能,也许。
现在,只要您在 Mongo 控制台中使用它,它就是小菜一碟。但是如何在 Rails 中做到这一点?我正在寻找一种解决方案,您可以在其中定义结构,而不是在模型中。一些领域将无处不在,当然,其中之一可能是“主题”。因此,如果受试者说“旅行”,应用程序会询问您“目的地”和“出发日期”,当它说“日历条目”时,系统会提示您输入“约会日期”和“参与者”。所以有一个结构,但是从一个实例到另一个实例,从一个文档到另一个文档。