如何确定arangodb树形图中的根对象?

时间:2014-01-19 16:48:53

标签: arangodb

我有一个包含树节点的文档集合和一个包含“is child of”的边集合,如下所示:

Folders=[
{_key:"1",name:"Root1"},
{_key:"2",name:"Root2"},
{_key:"3",name:"Root1.Node1"},
{_key:"4",name:"Root1.Node2"}]

FolderRelations=[
{_from:"Folders/3",_to:"Folders/1"},
{_from:"Folders/4",_to:"Folders/1"}
]

现在我想确定哪些文件夹项是该树中的根对象(所有没​​有出站关系的对象)。

也许,我在思考SQL时有点困惑,我想执行类似的事情:

SELECT * 
FROM Folders 
WHERE NOT EXIST (SELECT * FROM FolderRelations WHERE FolderRelations.FromKey=Folders.Key)

对于使用遍历和路径功能,我没有顶点可以开始。

1 个答案:

答案 0 :(得分:6)

这是一个应该解决问题的AQL示例:

for f in Folders
filter LENGTH( EDGES(FolderRelations, v._id, "outbound")) == 0
return f

您将获得层次结构中没有上述文件夹的所有顶点的列表。

但请注意: 保存{key:1}将无法获得所需的效果,您必须设置:

{_key: "1"}

_key用于内部键属性,它必须是一个字符串。