2013-02-14 75 views
0

我开始使用NodeJS和MongoDB开发在线足球管理游戏。但现在我不知道,我应该使用多个集合,还是我可以把所有东西放在一起?例如:MongoDB收集计划

{ 
    "_id" : ObjectId("5118ee01032016dc02000001"), 
    "country" : "Aruba", 
    "date" : "February 11th 2013, 3:11:29 pm", 
    "email" : "[email protected]", 
    "name" : "test", 
    "pass" : "9WcFwIITRp0e82ca3c3b314a656bfb437553b1d013", 
    "team" : { 
    "name" : "teamname", 
    "logo" : "urltologo", 
    "color" : "color", 
    "players" : [{ 
     "name" : "name", 
     "surname" : "surname", 
     "tackling" : 58, 
     "finishing" : 84, 
     "pace" : 51, 
     .... 
     }, { 
     "name" : "name", 
     "surname" : "surname", 
     "start_age" : 19, 
     "tackling" : 58, 
     "finishing" : 84, 
     "pace" : 51, 
     ... 
     }], 
    "stadium" : { 
     "name" : "stadium", 
     "capacity" : 50000, 
     "pic" : "http://urltopic", 
     .... 
    }, 
    }, 
} 

或为用户创建,赛程,球员,球队不同的收藏?或者其他方法?

回答

1

当我开始使用MongoDB时,我以“嵌入所有东西”的口头禅,这正是你在上面做的。但是,对于可能变得非常大的子文档,需要考虑一些问题。您应该考虑多久更新一次特定的文档或子文档。例如,您的玩家可能会定期更新,因此您可能希望将其放入自己的收藏中以便于使用。无论如何,MongoDB的灵活性使得对这个问题确实没有“正确的”答案,但它可以帮助您在数据建模中参考docs

1

关于如何在mongo中设计模式没有硬性规定。很大程度上取决于您的应用程序数据访问模式,数据访问频率以及不同实体之间的关系,它们如何缩小/增长/更改以及哪些保持完好。在不知道应用程序应该如何工作的情况下给出建议是不可行的。我建议你参考一本书,例如MongoDB in Action,它有关于如何在mongo中设计模式的建议,以正确考虑帐户应用程序的特定需求。