[英]How to find the Edge ID between two vertices in Gremlin
假設我們有一個包含許多頂點的圖g ,我們需要在頂點v1和具有ID id1和id2的頂點v2之間找到邊和ID。
遍歷這個只是:
g.V(id1).bothE().where(otherV().hasId(id2))
我使用了bothE()
因為你沒有說邊緣是從v1到v2還是反之亦然。 當你知道方向時,你應該使用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
如果你使用gremlin-python和orientDB下面的代碼片段會幫助你。
g.V(from_v_id).outE(label).where(__.inV().where(__.hasId("#" + to_v_id))).next()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.