MongoDB Data Structure
Tables used
- QuestionSets
- AnswerSets
- DSCEnquiries
- UserDetails
Structure of each table
QuestionSets
{
    questionSetId: id type,
    title: string,
    description: string,
    validFromDate: date,
    validToDate: date,
    extraFields: array [
    ],
    isGroupChat: boolean,
    stats: object {
        'id': number
    },
    questionWeightageStats: object {
        'id': number,
        'total': number
    },
    departments:[],
    elements: array [
        elemType: string(question/questionGroup),
        elemValue: { // elemType is question
            questionId: number,
            questionDesc: string,
            answerType: string,
            answerValues: array, // if answerType belongs to multiple choice selection the it becomes array of objects
            isRequired: boolean,
            isComments: boolean,
            initAnswerValue: string,
            placeHolder: string,
            order: number,
            links: array of objects [{
                url: string,
                label: string
            }]
        },
        elemType: string(question/questionGroup),
        elemValue: { // elemType is questionGroup
            groupName: string,
            groupId: number,
            groupOrder: number,
            groupItems: array of objects [{
                questionId: number,
                questionDesc: string,
                answerType: string,
                answerValues: array, // if answerType belongs to multiple choice selection the it becomes array of objects
                isRequired: boolean,
                isComments: boolean,
                initAnswerValue: string,
                placeHolder: string,
                order: number,
                links: array of objects [{
                    url: string,
                    label: string
                }]
            }]
        }
    ],
    createdOn: date,
    createdBy: date,
    lasUpdatedOn: date,
    lastUpdatedBy: date,
    status: 0,1,2,
    productId: string,
    publishedDate: date
}
AnswerSets
{
    answerSetId: id,
    questionSetId: id,
    elements: array of objects [{
        elemType: string(question/questionGroup),
        elemValue: { //elemType is question
            questionId: number,
            answerValue: string/array,
            comments: string
        },
    },
    {
        elemType: string(question/questionGroup),
        elemValue: { //elemType is questionGroup
            groupId: number,
            groupItems: array of objects [{
                questionId: number,
                answerValue: string/array,
                comments: string
            }]
    }],
    createdOn: date,
    createdBy: date,
    lastUpdatedOn: date,
    lastUpdatedBy: date,
    status: number,
    productId: string,
    ansWeightageStats: object {
        'id': number
    }
}
DSCEnquiries
{
    name: string,
    city: string,
    emailId: string,
    mobileNo: string,
    category: string,
    comment: string,
    productId: string,
    createdOn: date,
    createdBy: string,
    lastUpdatedOn: date,
    lastUpdatedBy: string,
    status: number,
    dscEnquiryId: id,
    followUpComments: string
}
UserDetails
{
    userCode: string,
    userName: string,
    userEmail: string,
    createdOn: date,
    createdBy: string,
    lastUpdatedOn: date,
    lastUpdatedBy: string,
    productId: string
}