设计MongoDB集合与关系方法

设计MongoDB集合与关系方法,mongodb,meteor,nosql,Mongodb,Meteor,Nosql,我在设计MongoDB系列以满足我的需求时遇到困难。我在以前的项目中只使用了SQL数据库,并且对MongoDB的NoSQL概念非常陌生。我目前的学习项目是存储和检索所玩游戏的统计数据(增强的排行榜示例)。在关系数据库中,我将创建以下表: Matches :_id :game_id (reference to the type of game played) :startedAt :endedAt Results :match_id :player_id (reference to th

我在设计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个结果。根据游戏类型,需要为每个玩家输入多个字段id指示的结果值(例如点数和用户是否获胜->两个字段=结果表中的两行)。 据我所知,在MongoDB中,概念是将相关信息存储在一个集合中,我试图忽略我在过去一年中对关系数据库所做的工作,并创建了以下集合结构:

Matches
:_id
:game_id
:startedAt
:endedAt
:players [{
    :player_id
    :results [{
        :field_id
        :value
    }]
}]
然而,我现在很难计算一个特定球员的整体成绩。“计算玩家A在游戏B中的总积分”这样的查询非常复杂,我担心性能会非常差。因此,对于这种情况,我仍然更喜欢关系模型。但是,当我想学习NoSQL数据库的概念时,我仍然想知道,我是否只是误解了DB,是否有一种很好的方法可以在单个查询集合中构造数据


非常感谢您的推荐。

我是MongoDB的新手,最近刚开始学习,但以下是我目前所知道的:

NOSQL数据库,如MongoDB,主要用于可扩展性和灵活性。对于简单的小项目,我看不出有什么好处

您描述的案例是应该使用SQL的典型案例

如果我被选中创建该数据库,并且我必须使用MongoDB,我会这样做: 1) 保留为匹配项创建的集合,并 2) 根据玩家添加新集合

第二个系列将用于排行榜和所有基于玩家的产品。这意味着将有重复的数据,但没有其他方法来处理玩家搜索,你将需要做的排行榜

如果只保存最新的比赛,也许它可以工作,但我仍然看不到任何好处

正如我之前提到的,我也在学习过程中,所以我不是100%确定

祝你的项目好运