下面是一個使用「現代」的玩具圖形作爲一個例子,你可能會做這件事:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().outE('knows').as('e').
inV().as('v').
select('e','v').by('weight').by(valueMap())
==>[e:0.5,v:[name:[vadas],age:[27]]]
==>[e:1.0,v:[name:[josh],age:[32]]]
所以,與其讓「addedOn」,從「喜歡」邊緣與性能的「項目」頂點,我想從「知道」邊緣獲得「重量」和「人」頂點的屬性。在第一行中,我們遍歷「知道」邊緣並將其標記爲「e」,然後我們遍歷相鄰的in
個人頂點並將其標記爲「v」。最後,我們選擇這兩個標籤的值並對它們應用by
轉換。 by
以循環方式應用,因此第一個by
應用於'e',第二個應用於'v'。
使用valueMap
有點方便,但通常您會知道您想要從頂點檢索的數據,就像您知道要從邊緣檢索的數據(即「權重」)一樣。爲了使一個稍好的輸出沒有所有嵌入Map
那麼你可以這樣做:
gremlin> g.V().outE('knows').as('w').
inV().as('a','n').
select('w','a','n').
by('weight').by('age').by('name')
==>[w:0.5,a:27,n:vadas]
==>[w:1.0,a:32,n:josh]
輝煌,感謝您的迷你教訓!出於好奇,還有另外一個步驟,然後再次變平坦,說[e:0.5,名字:vadas,年齡:27]? –
我想你可以解開地圖,但也許更好地關於你想要的數據更具體一些。因爲你通常不會在SQL中「從表中選擇*」,所以通常不會從頂點獲取所有數據。因此,我提出了一個稍有不同的解決方案。 –