我基本上是在尝试搜索所有连接的顶点以获取节点类型,Cypher查询版本给出了预期的结果,但Gremlin版本没有给我预期的结果。我做错的任何事情?
我的数据的可视化表示
Cyher Query以获取所有连接
MATCH p=shortestPath((n:Process)-[*]-(m:Process))
WHERE n <> m
RETURN ID(n), n, ID(m), m, length(p)
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;连接???
我觉得有些东西需要改变直到()函数,但是无法弄清楚是什么
答案 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')