ArangoDB:从节点数组中获取所有链接

时间:2016-08-08 08:19:46

标签: graph arangodb

this question之后和CoDEManX的优秀答案之后,我想问一下如何使用以前的结果(返回节点数组)来查询该集合中的所有链接。

基本上我打算使用

的结果
FOR v IN 0..100 ANY "Entity/node_id" 
EntityRelation OPTIONS      
{uniqueVertices: "global"}
RETURN v._key

用于查询链接:

"FOR c IN EntityRelation FILTER c._from==" + "\"" + 
node._id + "\"" + " OR c._to==" + "\"" + 
node._id + "\"" + " RETURN c";

我应该如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:2)

我不确定你想要达到什么目标,但这里有两种可能的解决方案:

FOR v IN 0..100 ANY "Entity/node_id" EntityRelation OPTIONS {uniqueVertices: "global"}
  FOR vv, c IN ANY v EntityRelation
    RETURN c

上面的查询使用嵌套的for循环(实际遍历)来执行外部遍历返回的每个节点的遍历,使用v作为起始顶点并忽略边缘的方向。返回内部遍历的整个边缘文档。

如果你想要外遍历的边缘,这甚至是不必要的:

FOR v, e IN 0..100 ANY "Entity/node_id" EntityRelation OPTIONS {uniqueVertices: "global"}
  RETURN e

如果要在查询中稍后访问遍历结果,请将其转换为子查询并将结果分配给变量:

LET nodes = (
  FOR v IN 0..100 ANY "Entity/node_id" EntityRelation OPTIONS {uniqueVertices: "global"}
    RETURN v._id
)
FOR node IN nodes
  FOR vv, c IN ANY node EntityRelation
    RETURN c

请注意,第一次遍历仅返回文档ID。它们足以从这些节点开始另一次遍历,并且无论如何都不会在此查询中使用顶点的其他属性。返回整个文档也会起作用,但效率不高。