2017-09-29 1 views
0

Lets sagen, dass ich eine MongoDB Sammlung mit docs wie:MongoDB Aggregation Lookup verschachtelte Array

{ 
    _id, 
    name: "someName", 
    children:[ 
     ObjectId, 
     ObjectId, 
    ] 
} 

Ist es möglich, zu einem tiefen Nest mit Kind der Aggregation Rahmen und Lookup mit? Ein weiteres Problem besteht darin, dass wir nicht oft wissen, wie das Nachschlagefeld des Kindes aussehen wird. Daher hat das Kind ein "Nachschlage" -Array mit den Feldern, die in der Datenbank nachgeschlagen werden sollten.

So zum Beispiel, wäre das Ergebnis mit einer Tiefe von 3:

{ 
    _id, 
    name: "someName", 
    children:[ 
     { 
      _id, 
      name: "someName", 
      children:[ 
       { 
        _id, 
        name: "someName", 
        children:[ 
         ObjectId, 
         ObjectId, 
        ] 
       } 
       { 
        _id, 
        name: "someName", 
        children:[ 
         ObjectId, 
         ObjectId, 
        ] 
       } 
      ] 
     }, 
     { 
      _id, 
      name: "someName", 
      children:[ 
       ObjectId, 
       ObjectId, 
      ] 
     } 
    ] 
} 

Ich möchte in der Lage sein, eine Funktion zu erstellen, die ich die „Tiefe“ des Nachschlag angeben kann.

Wir verwenden den mongodb NodeJs Treiber.

Antwort

0

Ich sehe zwei Lösungen hier:

  1. Um Ihr Schema zu ändern und versuchen, verschachtelte Sätze Muster zu verwenden. Siehe https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-nested-sets/

  2. Um eine rekursive Funktion zu machen alle Daten holen Sie benötigen, aber Sie werden ein Problem, wie N-Aggregationsverfahren ausgesetzt sind, erfordern

+0

Hallo, danke für die Anregungen! Die erste Lösung ist nicht geeignet, da wir eine Graphenstruktur und keine Baumstruktur haben. Aber das war ein anderes Beispiel aus dem Beispiel, das ich habe, also ist das mein Fehler. Ich werde in die Sekunde schauen und etwas Brauchbares machen! –