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