刚开始使用gremlin。
打印出所有精确的Vertex值
gremlin> g.V().values()
==>testing 2
==>Cash Processing
==>Sales
==>Marketing
==>Accounting
我能够在我的顶点之间找到所有直接连接的路径。
gremlin> g.V().hasLabel('Process')
.repeat(both().simplePath())
.until(hasLabel('Process'))
.dedup().path()
==>[v[25],v[28]]
==>[v[25],v[26]]
==>[v[26],v[27]]
==>[v[26],v[25]]
现在我正在尝试打印路径中的值,例如['销售','会计']而不是[v [25],v [28]]
尚未找到方法
已经尝试过失败
展开:不让我1-1映射
的gremlin> 。GV()hasLabel('处理&#39)重复(包括()simplePath()。),直到(hasLabel('处理&#39))。。。。去重()路径()。展开()。值() ==>现金处理 ==>会计 ==>现金处理 ==>销售 ==>销售 ==>营销 ==>销售 ==>现金处理
路径似乎是不同的数据类型,不支持.values()函数
的gremlin> 。g.V()hasLabel('流程') .repeat(两者()。simplePath()) 。直到(hasLabel('流程')) .dedup()。路径()。值()
org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath无法强制转换为org.apache.tinkerpop.gremlin.structure.Element
尝试了以下谷歌搜索并没有得到答案
在here找到一个用于java的但是对我没用的
l = []; g.V().....路径()。填充(L)
(但无法创建列表,无法设置readonly属性:类列表:org.apache.tinkerpop.gremlin.structure.VertexProperty $ Cardinality )
我在Gremlin控制台上运行它(运行./gremlin.sh)
答案 0 :(得分:3)
您可以使用by step来调整路径中的元素。例如,通过向valueMap(true)
提供by
,您可以获得顶点的属性以及顶点标签及其ID:
gremlin> g.V().repeat(both().simplePath()).times(1).dedup().path().by(valueMap(true))
==>[[id:1,name:[marko],label:person,age:[29]],[id:3,name:[lop],lang:[java],label:software]]
==>[[id:1,name:[marko],label:person,age:[29]],[id:2,name:[vadas],label:person,age:[27]]]
==>[[id:1,name:[marko],label:person,age:[29]],[id:4,name:[josh],label:person,age:[32]]]
==>[[id:2,name:[vadas],label:person,age:[27]],[id:1,name:[marko],label:person,age:[29]]]
==>[[id:3,name:[lop],lang:[java],label:software],[id:6,name:[peter],label:person,age:[35]]]
==>[[id:4,name:[josh],label:person,age:[32]],[id:5,name:[ripple],lang:[java],label:software]]
我使用的是现代图表,它是TinkerPop的玩具图表之一,通常用于此类示例。您的输出看起来会有所不同,您可能希望对valueMap(true)
调制器使用by
之外的其他内容。 TinkerPop documentation of the path
step本身包含两个您可能希望查看的path().by()
高级示例。