Gremlin在n级

时间:2018-03-10 18:31:33

标签: gremlin tinkerpop3

我基本上是在尝试搜索所有连接的顶点以获取节点类型,Cypher查询版本给出了预期的结果,但Gremlin版本没有给我预期的结果。我做错的任何事情?

  

我的数据的可视化表示

Visual Representation of my data

  

Cyher Query以获取所有连接

MATCH p=shortestPath((n:Process)-[*]-(m:Process)) 
WHERE n <> m 
RETURN ID(n), n, ID(m), m, length(p)

Cypher Result

  

Gremlin版

gremlin> g.V().hasLabel('Process')
.repeat(both().simplePath())
.until(hasLabel('Process'))
.path().by('title')

==>[Cash Processing,Accounting]
==>[Cash Processing,Sales]
==>[Sales,Marketing]
==>[Sales,Cash Processing]
==>[Marketing,Accounting]
==>[Marketing,Sales]
==>[Accounting,Cash Processing]
==>[Accounting,Marketing]

任何想法为什么Gremlin没有抓住&#39;现金处理&#39; - &gt;&#39;销售&#39; - &gt;&#39;营销&#39;连接???

我觉得有些东西需要改变直到()函数,但是无法弄清楚是什么

1 个答案:

答案 0 :(得分:2)

您没有谈论顶点的标签,但对我而言,似乎Sales顶点已经满足until(HasLabel('Process'))停止条件。

Cypher查询的正确翻译将更像这样:

g.V().hasLabel('Process').as('n').
  repeat(both().simplePath()).
    emit(hasLabel('Process')).as('m').
  dedup('n','m').
  path().count(local).as('len').
  select('m','n','len')