0

我在 ArangoDB 中有一个图,其根节点是“X”。现在 "a,b,c,d,e,f" 是 'X' 直接或盛大兄弟姐妹的兄弟姐妹。现在从给定的兄弟节点“a,b,c,d,e或f”我想到达节点“X”。是否有任何通用 AQL 查询可以直接遍历到任何图的根节点?

4

3 回答 3

4

为了提供一个确切的例子,我需要了解更多,但这是几种解决方案之一。

假设节点由“子”边连接,并且边的方向从父到子。您将向上遍历树或INBOUND

FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child RETURN p.vertices

如果您知道到根的最大跃点数,请将 50 更改为该值。

该语句将返回从起始节点通过子链接到头节点的所有路径和中间路径。要仅返回头节点的路径,您必须过滤掉中间路径。这可以通过检查是否没有父顶点来完成。

FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child 
  FILTER LENGTH(EDGES(child,v._id,'inbound'))==0 RETURN p.vertices

这将过滤掉所有不在根顶点处结束的路径。

于 2016-06-05T19:13:52.017 回答
1

RHSMan 的回答帮助了我,但这里已经清理了一点

LET ref_people = (
    FOR p IN people RETURN p._id
)
LET l = (
     FOR id IN ref_people 
         FOR link IN links FILTER id == link._from RETURN id
)

RETURN MINUS(ref_people, l)
于 2020-09-03T15:46:52.247 回答
0

我遇到了这个问题,因为我遇到了同样的问题,但上面的内容已经过时了:

我做了以下事情:

let ref_items = (for s in skills
return s._id)


let c = (for item in ref_skills
for sk in skill_skill
    filter item == sk._to

    return item)
return MINUS(ref_skills, c)
于 2019-03-14T18:34:37.247 回答