如何在 ArangoDB 中获取图的根节点键?
How to get the root node's key of a graph in ArangoDB?
我在 ArangoDB 中有一个图,其根节点是 'X'。现在 "a,b,c,d,e,f" 是 'X' 直系或曾祖兄弟姐妹的兄弟姐妹。现在,我想从给定的兄弟节点 "a,b,c,d,e or f" 到达节点 'X'。是否有任何通用的 AQL 查询可以直接遍历任何图的根节点?
为了提供一个确切的例子,我需要了解更多,但这是几个解决方案之一。
假设节点由"child"条边连接并且边的方向从父节点到子节点。您将向上遍历树或 INBOUND
FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child RETURN p.vertices
如果您知道到根的最多跳数,请将 50 更改为该值。
此语句将return 从起始节点到子链接到头节点的所有路径和中间路径。要 return 只有头节点的路径,您必须过滤掉中间路径。这可以通过检查是否没有父顶点来完成。
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
这将过滤掉所有不以根顶点结束的路径。
我遇到了这个问题,因为我遇到了同样的问题,但上面的内容已经过时了:
我做了以下事情:
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)
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)
我在 ArangoDB 中有一个图,其根节点是 'X'。现在 "a,b,c,d,e,f" 是 'X' 直系或曾祖兄弟姐妹的兄弟姐妹。现在,我想从给定的兄弟节点 "a,b,c,d,e or f" 到达节点 'X'。是否有任何通用的 AQL 查询可以直接遍历任何图的根节点?
为了提供一个确切的例子,我需要了解更多,但这是几个解决方案之一。
假设节点由"child"条边连接并且边的方向从父节点到子节点。您将向上遍历树或 INBOUND
FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child RETURN p.vertices
如果您知道到根的最多跳数,请将 50 更改为该值。
此语句将return 从起始节点到子链接到头节点的所有路径和中间路径。要 return 只有头节点的路径,您必须过滤掉中间路径。这可以通过检查是否没有父顶点来完成。
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
这将过滤掉所有不以根顶点结束的路径。
我遇到了这个问题,因为我遇到了同样的问题,但上面的内容已经过时了:
我做了以下事情:
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)
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)