ArangoDB:从节点数组中获取所有链接
ArangoDB: Get all links out of an array of nodes
在 和 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
注意第一次遍历returns只有文档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
注意第一次遍历returns只有文档ID。它们足以从这些节点开始另一次遍历,并且无论如何都不会在该查询中使用顶点的其他属性。返回整个文档也可以,但效率不高。