MongoDB树结构多个父母,总计和乘法

问题描述:

我正在尝试构建物料清单小应用。MongoDB树结构多个父母,总计和乘法

下面的层次图显示了如何有一个或多个部件(100个数字)或嵌套在它们下面的组件的多个组件(110个数字)。

Bill of materials heirarchy

目前我的数据结构是这样的:

collection.insert({'part_project': 998, 
        'part_number': 002, 
        'part_category_prefix': 1, 
        'part_type': 110, 
        'part_description': 'Tier 2 Assembly B', 
        'part_revision': 1, 
        'part_version': 'A', 
        'bill_of_material_usages': [{ 
         'bom_version': 'A', 
         'part_version': 'A', 
         'part_revision': 1, 
         'children': [ 
          {'part_number': '998 1 3 100', 'quantity': 3}, 
          {'part_number': '998 1 4 110', 'quantity': 1} 
         ]}] 
        }) 

有一个叫“bill_of_material_usages”的数组用于存储有关的部件或组件的儿童和引用的版本信息。

我想弄清楚如何在一个表中列出每个程序集列出所有零件和子程序集。

我也想弄清楚如何合计零件的总量。这就是说,如果A组有2个B组,而B组有3个A组,那么总共有2 * 3 = 6个A组。

关于如何使用当前数据结构或更好的结构来做到这一点的任何建议都会很棒。

我目前使用的是MongoDB,Flask,vis.js和google图表。

谢谢!

我解决了这个问题,使用了一个递归函数,该函数跟在树的一个子分支上,直到最后一个孩子没有其他孩子。这使我可以构建一个结构化树并计算单个部分的实例总数。

递归函数受到递归次数的限制(认为是初始),尽管这个限制不太可能对我的用例产生影响。