首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Gremlin查询获得特定标签的源顶点和目标顶点之间的所有传入中间顶点的列表?

如何使用Gremlin查询获得特定标签的源顶点和目标顶点之间的所有传入中间顶点的列表?
EN

Stack Overflow用户
提问于 2019-10-21 17:01:23
回答 1查看 145关注 0票数 0

我用来从所选顶点“P1”中获取所有传出顶点(具有边标签“has”)的Gremlin查询,直到它到达具有特定标签“L3”的顶点,如下所示:

代码语言:javascript
运行
复制
g.V().has("id”,”P1”).repeat(out(“has”)).until(hasLabel(“L3”)).path().by("id")

不出所料,上面的查询返回了选定顶点和目标顶点之间标记为“L3”的所有中间节点的列表。

然而,当在相反的方向上使用相同的查询(将“out”更改为“in”)时,即获取从所选顶点到具有特定标签的目标顶点的所有传入顶点的列表时,我立即得到一个gremlin查询错误。

下面是查询:

代码语言:javascript
运行
复制
 g.V().has("id”,”P3”).repeat(in(“has”)).until(hasLabel(“L1”)).path().by("id")

错误如下所示:

代码语言:javascript
运行
复制
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())。是否有特殊的查询或方法来获取选定顶点的所有传入顶点,直到它到达具有特定标签的顶点?

EN

回答 1

Stack Overflow用户

发布于 2019-10-21 21:04:48

我不确定这是否是您的问题,但我可以看到哪里会出现错误,因为" in“是Groovy中的保留字,因此,您必须使用匿名遍历类显式地生成它:__.in(),因此:

代码语言:javascript
运行
复制
g.V().has("id","P3").repeat(__.in("has")).until(hasLabel("L1")).path().by("id")

参考文档中的许多地方都记录了这个问题,但您可能遗漏了它(您还引用了一个相当旧的文档版本)-例如,在Vertex Steps中的注释中对此进行了描述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58482978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档