0

我开始使用 NodeJS 和 MongoDB 开发在线足球管理游戏。但现在我不知道,我应该使用多个集合还是可以将所有内容放在一个集合中?例子:

{
  "_id" : ObjectId("5118ee01032016dc02000001"),
  "country" : "Aruba",
  "date" : "February 11th 2013, 3:11:29 pm",
  "email" : "tadad@adadasdsd.com",
  "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",
        ....
     },
  },
}

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

4

2 回答 2

1

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

于 2013-02-14T18:12:16.993 回答
1

当我开始使用 MongoDB 时,我遵循“嵌入一切”的口号,这正是您在上面所做的。但是,需要考虑可能会变得非常大的子文档。您还应该考虑更新特定文档或子文档的频率。例如,您的播放器可能会定期更新,因此您可能希望将它们放入自己的收藏中以方便使用。无论如何,MongoDB 的灵活性使得这个问题实际上没有“正确”的答案,但它可能会帮助您参考有关数据建模的文档。

于 2013-02-14T18:12:33.383 回答