【问题标题】:What's a good Data Model in Mongo for my data? [closed]对于我的数据,Mongo 中有什么好的数据模型? [关闭]
【发布时间】:2015-11-13 05:55:34
【问题描述】:

我希望存储以下数据:

  • 电视剧

  • 电视节目中的季节

  • 一季内的剧集

  • 一集中的天赋

我目前将它存储在 4 个表(节目、季节、剧集、人才)中的 MySQL。我希望在 MongoDB 中找到合适的数据模型。

我正在考虑像这样嵌套数据: 显示->季节->剧集->天赋

这样嵌套数据是否会导致难以更新某些字段?

我是新手,所以我愿意接受任何建议。

【问题讨论】:

    标签: mongodb data-modeling


    【解决方案1】:

    深度嵌套的结构可能难以使用 MongoDB 集合。但是,如果您想构建一个嵌套结构,您可以执行以下操作:

      [{'show':{'name':'ShowName', 
                 'seasons':[{'name':'SeasonOne',
                             'episodes':
                                        [{'name':'EpisodeOne',
                                          'talents':['talentOne',
                                                     'talentTwo',
                                                     'talentN']
                                        }]
                            },
                            {'name':'SeasonTwo',
                             'episodes':
                                        [{'name':'EpisodeOne',
                                          'talents':['talentOne',
                                                     'talentTwo',
                                                     'talentN']
                                        }]
                            }]
               }},
          {'show':{'name':'ShowNameTwo', 
                 'seasons':[{'name':'SeasonOne',
                             'episodes':
                                        [{'name':'EpisodeOne',
                                          'talents':['talentOne',
                                                     'talentTwo',
                                                     'talentN']
                                        }]
                            },
                            {'name':'SeasonTwo',
                             'episodes':
                                        [{'name':'EpisodeOne',
                                          'talents':['talentOne',
                                                     'talentTwo',
                                                     'talentN']
                                        }]
                            }]
               }}]  
    

    然后您可以通过名称查询特定节目:

    db.show.find({"show.name":"ShowName"})
    

    或者甚至获得所有由某个人才主演的节目:

    db.show.find({"show.seasons.episodes.talents":"talentOne"})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-14
      • 2017-09-25
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多