我有一个包含树节点的文档集合和一个包含"is"的边缘集合,如下所示:
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)
对于使用遍历和路径功能,我没有任何起点。
最佳答案
这是一个应该解决您的问题的AQL示例:
for f in Folders
filter LENGTH( EDGES(FolderRelations, v._id, "outbound")) == 0
return f
您将获得层次结构中上方没有文件夹的所有顶点的列表。
但请注意:
保存{key:1}将不会获得理想的效果,您必须设置:
{_key: "1"}
_key用于内部键属性,它必须是字符串。