用于动态问答的 MongoDB 模式

Far*_*ROJ 4 schema-design mongodb nosql mongodb-query

我有一个动态问答的当前关系模型。我正在尝试查看是否可以将架构转换为 MongoDB 以提高性能和灵活性。

我们基本上有一系列问题和问题类型。这些问题被放在一个问题集中。

问题按特定顺序提出,但对于某些问题,根据答案,下一个问题可能会有所不同。

例如,如果 Q1=YES 那么问问题 Q9 否则问问题 Q2

关于如何在没有我目前使用的各种关系 tavles 的情况下设计这种模式的任何想法?

Rya*_*eir 8

沿着这个结构的路线怎么样:

{ 
    "Questions" : 
    [
        {
            "QuestionNumber": "Q1",
            "QuestionType" : "YESNO",
            "QuestionText" : "Are you happy today?",
            "Answers" : 
            [ 
                { 
                    "Text" : "YES", 
                    "NextQuestionIfAnswered" : "Q9" 
                }, 
                { 
                    "Text" : "No", 
                    "NextQuestionIfAnswered" : "Q2" 
                }
            ],
        },

        {
            "QuestionNumber": "Q2",
            "QuestionType" : "MULTIPLE",
            "QuestionText" : "Why aren't you happy?",
            "Answers" : 
            [ 
                { 
                    "Text" : "Dog died", 
                    "NextQuestionIfAnswered" : "" 
                }, 
                { 
                    "Text" : "I'm just generally sad", 
                    "NextQuestionIfAnswered" : "" 
                }
            ],
        },
        {
            "QuestionNumber": "Q9",
            "QuestionType" : "TEXTBOX",
            "QuestionText" : "Type why you are happy into the box below",
            "Answers" : []
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

因此,您有一系列问题,每个问题都有一个问题编号、问题类型(用于呈现决策),并且每个可能的答案都包含您在选择指定答案时导航到的问题编号。

您还可以通过在数组中的每个“答案”上添加 userAnswer 属性来存储用户对本文档中每个问题的答案。但是根据您的用户数量,您可能希望将其保存在一个单独的集合中。