2014-12-21 88 views
1

我想通過python庫bulbs找出更好的方式來查詢titangremlinGremlin通過使用燈泡的groovy腳本查詢

我有一個簡單的樹

 n0 
    / \ 
/  \ 
    n1  n2 
/\  \ 
n3 n4  n5 

,我想n4和邊緣:e[n0 -> n1] => e1e[n1 -> n4] => e2領導到n4。因此,在這個例子中,我想[e1, e2, n4]

我知道的所有節點的指標我做了查詢之前。在這個例子中node_ids = ['ddbe4d52e7034ffeb17c9426fc1484af, '754d5e84daad4140ba93cb10ce00cde0', '7b2848543b444fcc94e69d7930ffa996']

有了這個信息,我可以建立這樣的查詢,我的感覺是相當長和重複

g.V('nid', 'ddbe4d52e7034ffeb17c9426fc1484af').out 
    .has('nid', '754d5e84daad4140ba93cb10ce00cde0').out 
    .has('nid', '7b2848543b444fcc94e69d7930ffa996') 

這只是給我的最後一個節點。我仍然在試圖找出這個sideAffect件事gremlin必須返回我需要的邊緣。

我知道我可以創建自定義腳本,並使用這些徹底gremlin,但我很新的這一切東西,以便幫助將不勝感激。的東西

僞代碼我正在尋找

def get_node(nodes) { 
    edges = [] 
    for node in nodes: 
     get first node 
     find edge that goes to second node 
     edges.append(edge) 
    return edges + last node 
} 

此外,如果任何人有小鬼/ Groovy的一個很好的教程,這將是有益的

感謝

回答

1

你可以得到的路徑。嘗試:

g.V('nid', 'ddbe4d52e7034ffeb17c9426fc1484af').outE.inV 
.has('nid', '754d5e84daad4140ba93cb10ce00cde0').outE.inV 
.has('nid', '7b2848543b444fcc94e69d7930ffa996').path 

這給你一個列表:

[startVertex, startIntermediateEdge, intermediateVertex, intermediateTargetEdge, targetVertex]