簡體   English   中英

如何在Gremlin中找到兩個頂點之間的Edge ID

[英]How to find the Edge ID between two vertices in Gremlin

假設我們有一個包含許多頂點的圖g ,我們需要在頂點v1和具有ID id1id2的頂點v2之間找到邊和ID。

遍歷這個只是:

g.V(id1).bothE().where(otherV().hasId(id2))

我使用了bothE()因為你沒有說邊緣是從v1v2還是反之亦然。 當你知道方向時,你應該使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM