Ich habe eine Liste von Dokumenten in MongoDB mit Baumstruktur, wobei Model Tree Structures with Parent References Muster verwendet. Ich möchte eine einzelne Aggregation Abfrage, die Vorfahrenliste (bis zum Stamm) zurückgegeben, angesichts der Eigenschaft "Name".Rekursive Suche auf einer Sammlung in MongoDB
Struktur:
{
'_id': '1',
'name': 'A',
'parent': '',
},
{
'_id': '2',
'name': 'B',
'parent': 'A',
},
{
'_id': '3',
'name': 'C',
'parent': 'B',
},
{
'_id': '4',
'name': 'D',
'parent': 'C',
}
Aggregationser: (gegeben, name = 'D')
{
'_id': '4',
'name': 'D',
'ancestors': [{name:'C'}, {name:'B'}, {name:'A'}]
}
Note:
Ich kann nicht die Dokumentstruktur jetzt ändern. Es wird viele Probleme verursachen. Ich sah viele Lösungen, die vorschlagen, Model Tree Structures with an Array of Ancestors zu verwenden. Aber ich kann es jetzt nicht benutzen. Gibt es eine Möglichkeit, dies mit dem obigen Muster mithilfe einer einzigen Aggregationsabfrage zu erreichen? Danke
Warum ist '_id' Zeichenfolge? – styvane
@Styvane Es ist nur ein Beispiel. Aktuelles Dokument wird ObjectId haben – RaR
@RaR Gibt es etwas über Styvane's Antwort, die nicht für dich funktioniert, die das Kopfgeld veranlasst? – JohnnyHK