我在设计我的MongoDB集合以满足需求方面遇到了困难。我之前的项目中只使用过SQL数据库,对于MongoDB这种NoSQL概念比较新。我目前正在学习如何存储和检索游戏统计信息(增强版排行榜示例)。在关系型数据库中,我会创建以下表:
Matches
:_id
:game_id (reference to the type of game played)
:startedAt
:endedAt
Results
:match_id
:player_id (reference to the users collection)
:field_id
:value
一场比赛可以有n个玩家,每个玩家都有n个结果。根据游戏类型,需要为每个玩家输入由field_id指示的多个结果值(例如得分和用户是否获胜 -> 两个字段=结果表中的两行)。 据我所知,在MongoDB中,将相关信息存储在一个集合中的概念是忽略我过去一年在关系型数据库中所做的事情并创建了以下集合结构:
Matches
:_id
:game_id
:startedAt
:endedAt
:players [{
:player_id
:results [{
:field_id
:value
}]
}]
然而我现在遇到了计算特定玩家总成绩的困难,例如“计算A玩家在比赛B中获得的总积分”这样的查询很复杂,我担心性能会非常差。因此,在这种情况下,我仍然更喜欢关系模型。但是既然我想学习NoSQL数据库的概念,我仍然想知道是否有一种好的方法可以将数据结构化到单个集合中进行查询。
非常感谢您的任何建议。