2017-08-15 3 views
0

Ich versuche eine Stückliste Mini-App zu erstellen.MongoDB Baumstruktur Mehrere Eltern, Summe und Multiplikation

Das folgende Hierarchiediagramm zeigt, wie mehrere Assemblys (die 110 Zahlen) mit einem oder mehreren Teilen (100 Zahlen) oder Baugruppen darunter verschachtelt sind.

Bill of materials heirarchy

Derzeit sind meine Daten wie folgt strukturiert:

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} 
         ]}] 
        }) 

Es gibt eine Reihe ‚bill_of_material_usages‘ genannt, die Informationen über das Teil oder die Baugruppe der Kinder und die genannten Versionen speichert.

Ich versuche herauszufinden, wie man dies dann in einer Tabelle darstellt, wo jede Baugruppe alle ihre Teile und Unterbaugruppen auflistet.

Ich versuche auch herauszufinden, wie die Gesamtmengen eines Teils zusammenrechnen. Das heißt, wenn Baugruppe A 2 von Baugruppe B hat und Baugruppe B 3 von Teil A hat, dann wird es insgesamt 2 * 3 = 6 Teile A geben.

Alle Ratschläge, wie dies mit der aktuellen Datenstruktur oder einer besseren Struktur zu tun wäre, wäre fantastisch.

Ich verwende derzeit MongoDB, Flask, vis.js und Google-Diagramme.

Danke !!

Antwort

0

Ich löste das mithilfe einer rekursiven Funktion, die einem untergeordneten Zweig des Baums folgt, bis das letzte Kind keine weiteren Kinder hat. Dadurch kann ich einen strukturierten Baum erstellen und die Gesamtzahl der Instanzen eines einzelnen Teils berechnen.

Rekursive Funktionen sind durch die Anzahl der möglichen Rekursionen begrenzt (think inception), obwohl diese Einschränkung kaum Auswirkungen auf meinen Anwendungsfall hat.

Verwandte Themen