如何为每个用户提供中央集合中的文档副本

时间:2016-09-21 14:34:19

标签: mongodb meteor meteor-collections

我认为我没有给这个好头衔,但我发现很难用语言表达。

我正在构建一个应用程序,其中有一些用户可以访问的多项选择题。

如何让每个用户都能访问他们自己的" copy"多项选择考试?

现在我正在做的是在创建帐户时向每个用户添加我所有多项选择题的每个问题的完整副本,但这会很快变得混乱并意味着将来更新问题或改变考试将是一场噩梦。

是否有一种方法可以有一个容纳考试的集合,然后每个用户都可以访问他们自己的"复制"该考试记录了他们的答案等?

由于

1 个答案:

答案 0 :(得分:1)

一种方法是设置数据库以获得考试集合,然后每个用户的答案可以存储在一个单独的集合中,其答案和考试的参考ID以及答案所属的用户至。下面是一个示例,可能更容易理解。

考试收集样本数据:

{
  examId: 001,
  examType: "multiple-choice",
  examQuestions: [
    {
      questionNumber: 01,
      questionText: "How many collections should I use?",
      questionChoices: [
        {
          choice: "five",
          correct: 0
        }, 
        {
          choice: "three",
          correct: 0
        }
        {
          choice: "one",
          correct: 0
        }
        {
          choice: "two",
          correct: 1
        }
      ]
    },
    {
      questionNumber: 02,
      questionText: "What should I call my exams collection?",
      questionChoices: [
        {
          choice: "tests",
          correct: 0
        }, 
        {
          choice: "exams",
          correct: 1
        }
        {
          choice: "icecream",
          correct: 0
        }
        {
          choice: "bob",
          correct: 0
        }
      ]
    }
  ]
}

userAnswers集合示例数据:

{
  userId: "j23owdd9sJDO(Ee09kd",
  examId: 001,
  examAnswers: [
    {
      questionNumber: 01,
      questionAnswer: "two",
      correct: 1
    },
    {
      questionNumber: 02,
      questionAnswer: "bob",
      correct: 0
    }
  ]
}

此考试集合设置可让您选择在考试集合中存储多个考试并跟踪考试类型等数据,并为每个考试提供唯一ID,以便在您的应用或其他馆藏中引用它。它还可以保持您的考试收藏清洁。

此userAnswers集合设置将为您提供存储每个用户的多个考试答案的选项。存储他们给出的答案是否正确可以让您更轻松地显示每个考试的分数以及他们有多少正确的答案。