首页 文章

Gremlin在n个级别上查找所有连接的顶点

提问于
浏览
0

我基本上试图搜索所有连接的顶点以获得节点类型,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]

Any idea why Gremlin is not catching the 'Cash Processing'->'Sales'->'Marketing' connection???

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

1 回答

  • 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')
    

相关问题