我的类别集合包含树形结构中彼此相关的文档,就像下面显示的简化版本一样:
{
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 :(得分: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"});