2015-02-24 100 views
2

我有一個樹結構彼此相關文件類別集合,就像下圖所示的簡化版本:MongoDB中查找所有子節點

{ 
    categoryID: "ABC", 
    parentID: "AB" 
    } 

    { 
    categoryID: "ABD", 
    parentID: "AB" 
    } 

    { 
    categoryID: "ABD1", 
    parentID: "ABD" 
    } 

使得所得到的樹將是這樣的:

- A 
--- AA 
------AAA 
------AAB 
------AAC 
--- AB 
------ABA 
----------ABAA 
----------ABAB 
--------------ABABA 
--------------ABABB 
------ABB 

是否有可能找到/返回AB下的所有類別,換句話說,以便結果將僅包括以下類別(基於上面顯示的示例)?謝謝

- ABA 
- ABAA 
- ABAB 
- ABABA 
- ABABB 
- ABB 
+0

兩點意見:1)哪裏是你的代碼,使遠嗎? 2)提示:遞歸可能有幫助。 – Smutje 2015-02-24 14:20:56

回答

2

該文檔有an entire section on representing tree structures。從本質上講,如果您想要快速查詢子樹,請存儲list of all ancestors for a node並使用多鍵索引,例如

{ 
    categoryID: "ABD1", 
    parentID: "ABD", 
    ancestors: ["ABD", "AB", "A"] // multikey index 
} 

然後查詢db.categories.find({"ancestors" : "AB"});

+1

感謝您的詳細解答,祖先方法將解決找到任何節點(類別)的祖先或尋找任何節點的子節點(子孫)的問題。 – MKM 2015-02-24 15:33:27

相關問題