2013-09-23 40 views
0
各個節點

假設我有節點/邊爲:顯示頂部2中使用的gremlin

A --> M 300 
A --> B 100 
A --> C 200 
B --> D 300 
B --> E 200 
B --> L 1300 

我通過源節點爲A,B然後如何通過2

顯示由量和極限排序的以下輸出
A --> M 300 
A --> C 200 

B --> L 1300 
B --> D 300 

回答

0

我會假設你知道如何篩選頂點「A」和「B」,並開始遍歷:

gremlin> g = new TinkerGraph() 
==>tinkergraph[vertices:0 edges:0] 
... 
gremlin> g.v("A","B").outE.groupBy{it.outV.next()}{[it.amount,it.inV.next()]}.cap.next() 
==>v[A]=[[200, v[C]], [100, v[B]], [300, v[M]]] 
==>v[B]=[[300, v[D]], [1300, v[L]], [200, v[E]]] 

所以上面會得到你所有的「A」和「B」元素與他們的「金額」(不知道你的域中代表什麼數字)。一旦你有了,只需使用「減少」關閉來排序和彈出列表中的前兩項:

gremlin> g.v("A","B").outE.groupBy{it.outV.next()}{[it.amount,it.inV.next()]}{it.sort{a,b->b[0]<=>a[0]}[0..<2]}.cap.next() 
==>v[A]=[[300, v[M]], [200, v[C]]] 
==>v[B]=[[1300, v[L]], [300, v[D]]] 
+0

是的它的工作。 thanx。:)只有當假設v [A]有4 outV()和v [B]時有2 outV(),如果我通過[0 .. <4],那麼它會拋出toIndex = 4異常。 – Abhi

+0

我想你可以做一個'it.sort {a,b-> b [0] <=> a [0]}。take(2)' –

+0

是的,它正在工作。很多斯蒂芬。:) – Abhi