假设我们有一个拥有许多顶点的图形g,并且我们需要找到连接具有ID id1 和 id2 的顶点v1和v2之间的一条边及其边缘ID。
g.V(id1).bothE().where(otherV().hasId(id2))
由于您没有说明边缘是从v1到v2还是反过来,因此我使用了bothE()
。当您已知方向时,应使用outE()
或inE()
。此外,当您知道边缘标签时,您应将其提供给此步骤以减少要遍历的边缘数量。
对于TinkerPop的现代图,它看起来像这样:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().valueMap(true)
==>[name:[marko],label:person,id:1,age:[29]]
==>[name:[vadas],label:person,id:2,age:[27]]
==>[name:[lop],label:software,id:3,lang:[java]]
==>[name:[josh],label:person,id:4,age:[32]]
==>[name:[ripple],label:software,id:5,lang:[java]]
==>[name:[peter],label:person,id:6,age:[35]]
gremlin> g.V(1).bothE().where(otherV().hasId(2)).id()
==>7
gremlin> g.V(1).outE('knows').where(inV().hasId(2)).id()
==>7
g.V(from_v_id).outE(label).where(__.inV().where(__.hasId("#" + to_v_id))).next()