Graph ArangoDB:从节点数组中获取所有链接
下面是CoDEManX给出的一个极好的答案,我想问一下如何使用前面的结果(返回的节点数组)查询出该集合中的所有链接 基本上,我打算使用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 + "\"
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,链接结果是相同的。但是从你的回答来看,我已经用嵌套的方法创建了一个工作节点,然后只查询这些节点的入站链接。我明白了,所以你可以找到所有连接到某个节点的节点,然后返回所有指向这些节点的节点。我想在这种情况下,嵌套方法是最好的解决方案。