【发布时间】:2016-02-05 12:57:01
【问题描述】:
我在设计我的 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 数据库的概念时,我仍然想知道,我是否只是误解了数据库,并且有一种很好的方法可以将数据构造在单个集合中以进行查询。
非常感谢任何建议。
【问题讨论】: