MongoDB数据库设计 - 比赛应用程序

时间:2014-12-11 18:54:41

标签: mongodb database-design database

我正在制作竞赛申请表。到目前为止有4个收藏:

  1. contest
  2. questions
  3. matches
  4. users
  5. 我想为每个user分配的每个match分数存储。但我真的找不到合适的方法来实现这一目标。

    我提出的所有内容,是使用数组替换matches中的users,其中每个元素都包含对matches集合和score字段的引用。但我认为这不是很有效。


    修改

    我在想另一种解决方案。一个名为scores的单独集合,其中包含三个字段usermatchscore


    这是我的架构结构:

    竞赛enter image description here

    问题enter image description here

    匹配enter image description here

    用户enter image description here

    注意我们也欢迎对当前设计进行任何建议的调整。

1 个答案:

答案 0 :(得分:0)

由于mongodb不是为支持集合关系而设计的,因此您最终会迁移一些重复的工作,我建议您找到一种在单个文档中存储尽可能多的数据的方法。

你的分数会出现在每个匹配文档中,可能用户数组会有这种结构{'users':[{user_id:'xxx',得分:xxx} {user_id:'xxx',得分:xxx}]}

另一个解决方案就是你所说的,在每个用户文档中都有一个匹配数组,结构如下:{'matches':[{match_id:'xxx',得分:xxx} {match_id:' XXX”,得分:XXX}]}

您也可以同时使用这种迁移,这取决于您需要执行的查询类型。您还可以在存储用户/匹配名称/标题

的子文档中包含一个字段

注意:正如您所看到的,您有两种解决方案,或者您可以针对文档大小进行优化(这样您可以存储更多)或优化性能(这样您可以更快/更少的资源读取)

希望这有任何帮助。