如何将顶点连接到多个顶点

时间:2017-06-21 20:44:24

标签: gremlin

在下面的例子中,使用gremlin语法,我想获得顶点数1,知道顶点3和4的属性。

如此口头上 - 通过'创建'边缘到顶点,属性名称= lop AND 由'知道'边缘到顶点,属性名称= josh

我想准确指定边的名称,所以v.out.name.filter {it.matches(' lop | josh')}不好,因为它将占用1的所有边缘

enter image description here

2 个答案:

答案 0 :(得分:3)

这很好用:

gremlin> Gremlin.version()
==>3.2.4
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().has('name', 'lop').in('created').as('x').
......1>       out('knows').has('name', 'josh').select('x')
==>v[1]

您在问题中使用的语法看起来更像是TinkerPop 2,它不受支持。您应该使用TinkerPop 3

答案 1 :(得分:2)

您可以使用match(TinkerPop 3.x):

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().
......1>   match(
......2>     __.as('a').out('created').has('name','lop'),
......3>     __.as('a').out('knows').has('name','josh')).
......4>   select('a')
==>v[1]

它与你的英文版本的阅读非常相似,但它并不是像Jason Plurad的答案那样以索引查看。我想它可以倒转一点来得到相同的答案:

gremlin> g.V().
......1>   has('name','lop').
......2>   match(
......3>     __.as('a').in('created').as('b'),
......4>     __.as('b').out('knows').has('name','josh')).
......5>   select('b')
==>v[1]