我正在尝试通过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次。目前我收到的结果太少了。
任何帮助将不胜感激,
感谢。
答案 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, 马尔科。