使用mongoDB管理分层数据

时间:2019-02-08 22:54:16

标签: mongodb

我真的是MongoDB的新手,但是我正在尝试使用MongoDB制作项目管理工具。对于我如何设计数据库结构,我需要一些专业意见,因为我对自己所做的事情感觉不合适。

我最初想在mongoDB中使用的项目层次结构是下面的第一个示例。但是,我最终通过使用类似于第二个示例的集合来按层次结构分离数据,因为一个数据可以被多个用户同时修改,并且我不确定在这种情况下mongoDB如何处理数据。它现在可以正常工作,但是我需要制作一个更大的应用程序,所以我认为这是时候让这个问题变得过于复杂了。预先感谢。

/////////////////////////////////////////////////////
// Example 1
/////////////////////////////////////////////////////
[
    {
        projectName: "Cleanup Project",
        clientId: "123456",//Client Id
        parts: [
            {
                name: "Cleanup my room",
                bigTasks:[
                    {
                        name: "Wipe",
                        smallTasks:[
                            {
                                name: "Wipe Windows",
                                eta: "2019-02-13T14:30:52.123Z"
                            },
                            {
                                name: "Wipe my table",
                                eta: "2019-02-13T15:30:52.123Z"
                            }
                        ]
                    },
                    {
                        name: "Vacuum",
                        smallTasks:[
                            {
                                name: "Vacuum under my bed",
                                eta: "2019-02-13T16:30:52.123Z"
                            },
                            {
                                name: "Vacuum my carpet",
                                eta: "2019-02-13T17:30:52.123Z"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    {...}//More Projects
]

/////////////////////////////////////////////////////
// Example 2
/////////////////////////////////////////////////////

//Project Collection
[
    {
        projectName: "Cleanup Project",
        clientId: "123456",//Client Id
        parts: "9876543210"
    },
    {}//More Projects
]

//Parts Collection
[
    {
        _id:"9876543210",
        name: "Cleanup my room",
        bigTasks: "1212121212"
    },
    {}//More Parts
]

//BigTasks Collection
[
    {
        _id:"1212121212",
        name: "Wipe",
        smallTasks: "3453453453"
    },
    {}//More BigTasks
]

//SmallTasks Collection
[
    {
        _id:"3453453453",
        name: "Vacuum my carpet",
        eta: "2019-02-13T17:30:52.123Z"
    },
    {}//More SmallTasks
]

0 个答案:

没有答案