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

Graph ArangoDB:从节点数组中获取所有链接,graph,arangodb,Graph,Arangodb,下面是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 + "\"

下面是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";

我应该怎么做呢?

我不确定您到底想要实现什么,但这里有两种可能的解决方案:

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。它们足以从这些节点开始另一次遍历,并且在该查询中不会使用顶点的其他属性。返回整个文档也可以,但效率不高。

我不确定您到底想要实现什么,但这里有两种可能的解决方案:

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。它们足以从这些节点开始另一次遍历,并且在该查询中不会使用顶点的其他属性。返回整个文档也可以,但效率不高。

对不起,我回答问题的方式太糟糕了。我只想从给定节点的任何深度获取所有链接。因此,如果选择节点A、B、C、D,链接结果是相同的。但是从你的回答来看,我已经用嵌套的方法创建了一个工作节点,然后只查询这些节点的入站链接。我明白了,所以你可以找到所有连接到某个节点的节点,然后返回所有指向这些节点的节点。我想在这种情况下,嵌套方法是最好的解决方案。对不起,我把问题分阶段的方式太糟糕了。我只想从给定节点的任何深度获取所有链接。因此,如果选择节点A、B、C、D,链接结果是相同的。但是从你的回答来看,我已经用嵌套的方法创建了一个工作节点,然后只查询这些节点的入站链接。我明白了,所以你可以找到所有连接到某个节点的节点,然后返回所有指向这些节点的节点。我想在这种情况下,嵌套方法是最好的解决方案。