3

我正在尝试通过 java/pipes 使用 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 次。目前我得到的结果太少了。

任何帮助,将不胜感激,

谢谢。

4

1 回答 1

2

如果您的起始节点是 gv(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 上有一个索引,否则它是对所有 gV 的线性扫描,用于那些 idd=v1 的顶点。

HTH,马尔科。

于 2013-01-21T20:05:02.423 回答