0

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

在此处输入图像描述

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

  1. 祖先的数组
  2. 图形
  3. 简单的关系{_id:“雪茄”,父亲:“宫廷音乐”,母亲:“Solar Slew”,父亲的父亲:...}
  4. 具有嵌套集的树结构

鉴于以下用例,我希望从比我更多的经验中获得关于各种方法的权衡的意见:

我的用例如下:

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

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

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

感谢您的输入。

4

1 回答 1

0

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

教程:MongoDB 中的模型树结构。您可以插入每匹马(从祖先链最靠前的位置开始),其中包含马的“孩子”(即马的母亲和父亲)的 id 列表。

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

于 2014-01-03T21:41:26.980 回答