2014-07-23 45 views
1

我正在构建一个小型的Node/Mongo应用,每天为用户提供最多3个问题。用户只能回答“是”或“否”,并在稍后确定正确的答案(这些问题更接近预测)。目前,我有这些文件:测验网站的Mongo架构

  • 用户
    • ID
  • 问题
    • ID
  • 问题答案
    • ID
    • question_id(REF)
  • UserAnswer
    • ID
    • question_id(REF)
    • USER_ID(REF)

什么是查询的最有效方法分贝,所以我得到今天的问题,但也检查用户是否已经回答了这个问题?我觉得我正在超越它。我尝试了一些似乎过分矫枉过正的方法。

+2

为什么你在NoSQL数据库中建立了太多的关系,你可以将UserAnswer对象添加到用户和QuestionAnswer对象中。和$ push和$ pull关键字使您的查询回答 –

+0

不会将UserAnswer对象添加到用户一段时间后创建一个大型的用户对象?每次用户提交问题答案时,都会将其推送到文档。 –

+0

这是使用NoSQL的主要好处,您可以通过一个查询获取整个数据并保存到您的全局变量中,并在需要显示时使用它,它将快速反复查询 –

回答

1

因为我们没有在mongodb中加入,所以将它们全部放在一个模式中很好。 它比使用关系更快。

同样为了保持您的查询小,请看看this

你应该远离关系,直到你有充分的理由使用它们。所以,你需要的只是一个模式。

+0

因此,我应该存储每个在该模式中回答问题的用户?所以基本上一个问题文档与用户,用户答案和真正的答案作为领域。一旦有成千上万的用户回答每一个问题,这种方式是否仍然有效? –

+0

是的,如果你对它们有很好的疑问,它就会起作用。 –