【问题标题】:How should I model a horses pedigree in Mongodb?我应该如何在 Mongodb 中为马谱系建模?
【发布时间】:2014-01-03 21:31:30
【问题描述】:

我正在尝试在 mongodb 中模拟马的血统。

我在互联网上进行了一些研究,并发现了几种可能的方法:

  1. 祖先数组
  2. 图表
  3. 简单的关系{_id:“雪茄”,父亲:“Palace Music”,母亲:“Solar Slew”,父亲的父亲:...}
  4. 嵌套集的树结构

鉴于以下我的用例,我希望在各种方法的权衡方面获得比我更有经验的人的意见:

我的用例如下:

  • 演示文稿:我想要显示或让用户选择 在用户查询特定的任何时候显示马的血统 马。
  • 遍历/查询:能够轻松遍历或查询系谱(按血统)以返回系谱中的特定马匹(即返回所有育种公马,其后代拥有超过 5 次草皮获胜)
  • 性能:谱系查询必须非常高效。
  • 评级:将血统数据与比赛结果结合使用来制定血统评级。强文本
  • 分析:我想对与胜利相关的马匹血统进行分析,可能会尝试回答以下问题:

    • 是一匹以“北方舞者”为曾祖父的马,更有可能赢得第一场草皮比赛。
    • 在肥沃的草坪上产生冠军的前 10 种公牛(母马、大公马或大母马)是什么。

附加信息:我计划在 MEAN 堆栈上开发此应用程序。

感谢您的意见。

【问题讨论】:

  • 性能是难点。祝你好运。
  • 为什么会这样?数据太多?
  • 不,只是当我开始考虑查询该结构时,这是一个糟糕的查询,所以我想这需要一些努力。

标签: javascript mongodb mean-stack


【解决方案1】:

你拥有的数据很明显是一个二叉树结构。每匹马都是树中的一个节点,有两个子节点代表马的父母(讽刺!)

Tutorial: Model Tree Structures in MongoDB。您可以在每匹马(从祖先链最远的位置开始)插入马的“孩子”(即马的母亲和父亲)的 id 列表。

我承认我对 MongoDB 不够熟悉,无法为您提供特定的数据库查询代码,但由于 Mongo 能够进行分层数据存储,因此树应该几乎没有问题。

【讨论】:

  • 感谢您的回复。我在研究中遇到了这个问题。我在这里担心的是我没有区分公牛和母马,只是父母。使用这种方法,我认为遍历树找到特定的祖先会很冒险,但我可能弄错了。再次感谢。
  • @user365853,存储马的性别应该足以区分父亲和母亲。或者,您可以明确存储父亲和母亲,而不是将两者一起存储在一个列表中。例如:{id: "Nearco", sire: null, dam: null}{id: "Lady Angela", sire: null, dam: null}{id: "Noarctic", sire: "Nearco", dam: "Lady Angela"}
猜你喜欢
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2011-10-02
  • 2012-03-17
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多