我正在尝试通过 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 次。目前我得到的结果太少了。
任何帮助,将不胜感激,
谢谢。
最佳答案
如果您的起始节点是 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 上有一个索引,否则对于那些具有 idd=v1 的顶点,它是通过所有 g.V 的线性扫描。
哈,
马可。
关于groovy - 使用 gremlin 查找距起始节点给定距离内的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431766/