使用gremlin查找距起始节点给定距离内的所有节点

时间:2013-01-21 02:35:58

标签: groovy cypher gremlin

我正在尝试通过java / pipes使用gremlin,并且作为我的第一个查询之一,我正在尝试查找从给定起始节点可到达的所有节点,最大距离为3.在cypher中,我的查询是:

START n = node(*)
MATCH n -[*1..3]-> reached 
WHERE (has(n.id) and n.id = \"v1\")
RETURN distinct n, reached

哪个正常,我到目前为止在gremlin中的内容是:

_().has('idd', 'v1').out().loop(1){it.loops < 3}{true}

无法正常工作。从我理解的方式来看,它应该从每次迭代中发出输出并迭代3次。目前我收到的结果太少了。

任何帮助将不胜感激,

感谢。

1 个答案:

答案 0 :(得分:2)

如果您的起始节点是g.v(1),那么要在三步之外找到所有唯一节点:

g.v(1).out.loop(1){it.loops < 3}{true}.dedup

..你可能要做到&lt; 4(忘了)。接下来,如果您的起始节点有idd = v1,那么执行:

g.V('idd','v1').out.loop(1){it.loops < 3}{true}.dedup

确保您在idd上有索引,或者对于那些idd = v1的顶点,这是对所有g.V的线性扫描。

HTH, 马尔科。