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



我试图通过java/管道使用gremlin,作为我的第一个查询之一,我试图找到从给定的起始节点可到达的所有节点,最大距离为3。在密码我的查询是:

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次。目前我得到的结果太少了。

任何帮助都将不胜感激,

谢谢。

如果您的起始节点是g.v(1),那么要找到所有唯一的节点,请执行以下操作:

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

. .你可能不得不去<4(忘记)。接下来,如果您的开始节点具有idd=v1,那么执行:

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

确保你在idd上有一个索引,否则就是对所有的g.V进行线性扫描,找到那些idd=v1的顶点。

HTH,Marko .

最新更新