我用来从所选顶点“P1”中获取所有传出顶点(具有边标签“has”)的Gremlin查询,直到它到达具有特定标签“L3”的顶点,如下所示:
g.V().has("id”,”P1”).repeat(out(“has”)).until(hasLabel(“L3”)).path().by("id")不出所料,上面的查询返回了选定顶点和目标顶点之间标记为“L3”的所有中间节点的列表。
然而,当在相反的方向上使用相同的查询(将“out”更改为“in”)时,即获取从所选顶点到具有特定标签的目标顶点的所有传入顶点的列表时,我立即得到一个gremlin查询错误。
下面是查询:
g.V().has("id”,”P3”).repeat(in(“has”)).until(hasLabel(“L1”)).path().by("id")错误如下所示:
Failure in submitting query:
Error: Script compile error: Missing ')' 不过,我在查询中没有看到任何丢失的括号,我对传入或传出顶点进行的查询之间唯一的变化是使用“in”而不是“out”。
在官方的补丁程序文档(https://tinkerpop.apache.org/docs/3.2.9/reference/#_traversal_strategies_2)中,在遍历策略中,我找不到任何使用repeat( In ())的示例,只有repeat(out())。是否有特殊的查询或方法来获取选定顶点的所有传入顶点,直到它到达具有特定标签的顶点?
发布于 2019-10-21 21:04:48
我不确定这是否是您的问题,但我可以看到哪里会出现错误,因为" in“是Groovy中的保留字,因此,您必须使用匿名遍历类显式地生成它:__.in(),因此:
g.V().has("id","P3").repeat(__.in("has")).until(hasLabel("L1")).path().by("id")参考文档中的许多地方都记录了这个问题,但您可能遗漏了它(您还引用了一个相当旧的文档版本)-例如,在Vertex Steps中的注释中对此进行了描述。
https://stackoverflow.com/questions/58482978
复制相似问题