首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过边缘标签过滤Gremlin遍历

通过边缘标签过滤Gremlin遍历
EN

Stack Overflow用户
提问于 2018-10-17 18:11:06
回答 1查看 2.2K关注 0票数 1

我试图使用Gremlin向外遍历从起始节点到X连接度中的所有连接节点。连接的方向并不重要,所以我使用的是both()函数。我也希望能够防止遍历与特定标签交叉边缘。这是一个样本图。

代码语言:javascript
复制
gremlin> g.addV().property(id,1).as('1').
......1>   addV().property(id,2).as('2').
......2>   addV().property(id,3).as('3').
......3>   addV().property(id,4).as('4').
......4>   addV().property(id,5).as('5').
......5>   addV().property(id,6).as('6').
......6>   addV().property(id,7).as('7').
......7>   addE('edge1').from('1').to('2').
......8>   addE('edge2').from('1').to('3').
......9>   addE('edge2').from('2').to('4').
.....10>   addE('edge3').from('3').to('5').
.....11>   addE('edge3').from('4').to('6').
.....12>   addE('edge4').from('7').to('6').iterate()

到目前为止,我进行的遍历如下:

代码语言:javascript
复制
gremlin> g.V(1).
......1>   repeat(both().filter(not(inE('edge3')))).
......2>   times(4).
......3>   emit().
......4>   simplePath().
......5>   dedup()

然而,这并不完全是我想要的。我想要的东西,实际上将防止横越一个顶点,如果它必须跨越指定的边缘。我当前的实现过滤了具有传入边缘的顶点,但在某些情况下,如果遍历器越过另一条边界到达那里,我可能仍然希望该顶点出现在结果中。

这有道理吗?简而言之,我试图在边缘上进行专门的过滤,而不是在顶点与其边缘的关系上进行过滤。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 20:48:17

我想我遵循了你的意思,你就不能用bothE()来过滤那些边,同时遍历它们:

代码语言:javascript
复制
gremlin> g.V(1).
......1>   repeat(bothE().not(hasLabel('edge3')).otherV()).
......2>     times(4).
......3>     emit().
......4>   simplePath().
......5>   dedup()
==>v[2]
==>v[3]
==>v[4]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52861162

复制
相关文章

相似问题

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