这是该项目,粗略地说:我们有用户,我们有民意调查,用户既可以创建民意调查,也可以投票现有民意调查。当然,一个用户每次投票只能投一次。MongoDB“关系型”应用程序的体系结构
对我来说这显然是关系型的,所以原则上NoSQL是没有意义的。但后来我读了一点,得出的结论是,你确实可以在MongoDB中建立关系,所以我来到这个计划中,我想知道在继续之前它是否是Mongo-OK。
在我们店所有的用户数据,包括ID的表/集合称为用户(我猜蒙戈文件的默认_id会好吗?)
在另一台/收集所谓民意调查,我们将有一个id ,问题,可能的答案和(这里是我开始怀疑的地方)一个包含所有已经投票的用户ID的数组?另外还有作者的用户ID和用户名(我知道这是重复的,但是我在某处读到我在mongo中这样做是有道理的,所以你不必为了知道用户的用户名而启动另一个查询)。
在MySQL中,我会创建一个带有投票关系的表(用户ID已经投票pollID),但我猜想在Mongo中,将这些数据包含在投票文件本身中是否有意义?当然,这个用户ID数组将会不断更新,是吗?
如果我想列出由给定的用户ID创建的所有民意调查?我知道你可以使用find(),但至少在这种情况下它和MySQL一样高效?此外,每个民意调查将在一个类别,你也必须能够按类别进行排序等,但我不想进一步复杂化。
感谢您的回答!但我有一个疑问,当你说:“将对象嵌入到数组中”时,你的意思只是userId整数或“真实对象”类型?我的意思是,数据类型是一个整数还是一个对象?如果问题有任何意义(我不认为......),它有什么区别吗?另外:总体而言,您认为这种应用程序可以比Mongo更好地使用Mongo而不是MySQL吗?(我想这是更'个人',但我想听听你的意见) –
正如你所暗示的,当我说'对象'我指的是一个对象数据结构,因为我假设你想存储更多关于用户的投票,而不仅仅是原始行动。我认为这一切都取决于您的堆栈和您计划使用数据的方式。即使我是MongoDB的拥护者,我认为这都归结为衡量您的特定应用程序的优点和缺点。因为我没有关于您的应用程序的所有信息,所以我不可能推荐一个或另一个。尽管如此,如果配置得当,两者都可以表现出色。 –