我正在制作竞赛申请表。到目前为止有4个收藏:
contest
questions
matches
users
我想为每个user
分配的每个match
分数存储。但我真的找不到合适的方法来实现这一目标。
我提出的所有内容,是使用数组替换matches
中的users
,其中每个元素都包含对matches
集合和score
字段的引用。但我认为这不是很有效。
修改
我在想另一种解决方案。一个名为scores
的单独集合,其中包含三个字段user
,match
和score
。
这是我的架构结构:
竞赛:
问题:
匹配:
用户:
注意我们也欢迎对当前设计进行任何建议的调整。
答案 0 :(得分:0)
由于mongodb不是为支持集合关系而设计的,因此您最终会迁移一些重复的工作,我建议您找到一种在单个文档中存储尽可能多的数据的方法。
你的分数会出现在每个匹配文档中,可能用户数组会有这种结构{'users':[{user_id:'xxx',得分:xxx} {user_id:'xxx',得分:xxx}]}
另一个解决方案就是你所说的,在每个用户文档中都有一个匹配数组,结构如下:{'matches':[{match_id:'xxx',得分:xxx} {match_id:' XXX”,得分:XXX}]}
您也可以同时使用这种迁移,这取决于您需要执行的查询类型。您还可以在存储用户/匹配名称/标题
的子文档中包含一个字段注意:正如您所看到的,您有两种解决方案,或者您可以针对文档大小进行优化(这样您可以存储更多)或优化性能(这样您可以更快/更少的资源读取)
希望这有任何帮助。