对于给定的顶点,只有当该顶点的两种边类型都存在时,我们如何才能获得两种不同类型(即标签)的所有出边?
例如,
g = TinkerGraphFactory.createTinkerGraph();
我想认识所有创建了一些软件并且认识某人的人。显然,我不能使用
g.V.out('created', 'knows')
因为,这会给所有创造过东西或认识某人的人。
对于给定的顶点,只有当该顶点的两种边类型都存在时,我们如何才能获得两种不同类型(即标签)的所有出边?
例如,
g = TinkerGraphFactory.createTinkerGraph();
我想认识所有创建了一些软件并且认识某人的人。显然,我不能使用
g.V.out('created', 'knows')
因为,这会给所有创造过东西或认识某人的人。
我并没有打算以这种方式解决这个问题,但使用 and() 步骤似乎在这里工作得很好:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.and(_().both("knows"),_().both("created"))
==>v[1]
==>v[4]
要获得满足 AND 标准的顶点的边/路径,您可以执行以下操作:
gremlin> g.V.and(_().both("knows"),_().both("created")).bothE("created","knows").dedup
==>e[9][1-created->3]
==>e[7][1-knows->2]
==>e[8][1-knows->4]
==>e[10][4-created->5]
==>e[11][4-created->3]
由于 Gremlin 的第一部分获得了具有“已知”和“已创建”边的顶点,因此您可以安全地抓取两个返回顶点的边并返回唯一的边。