如何遍歷圖並遞增頂點屬性的值?要麼通過某個固定的金額,要麼通過一個通向它的邊緣的屬性。如何增加TinkerPop圖中的頂點屬性值
例如。用下圖:
gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> a = g.addV('name','a','amount', 100).next()
==>v[0]
gremlin> b = g.addV('name','b','amount', 200).next()
==>v[3]
gremlin> c = g.addV('name','c','amount', 300).next()
==>v[6]
gremlin> a.addEdge('fill', b, 'bonus', 20)
==>e[9][0-drain->3]
gremlin> b.addEdge('fill', c, 'bonus', 40)
==>e[10][3-drain->6]
gremlin>
所以
1)我怎麼會增加由10
每個頂點?
末我想有:
gremlin> g.V().valueMap()
==>[amount:[110],name:[a]]
==>[amount:[210.0],name:[b]]
==>[amount:[310.00],name:[c]]
鑑於聲明:
g.V(a).property('amount', X)
我想我試圖做一些事情,如:
g.V(a).property('amount', g.V(a).values('amount').next()+10)
..但是對於圖中的所有頂點。它看起來像Tinkerpop2有loop()
和it.object
可能有幫助,但
編輯似乎並不Tinkerpop3:OK,我很接近,但也不能令人信服:
gremlin> g.V().as('x').property('amount', select('x').by('amount')+10)
No signature of method: org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.plus() is applicable for argument types: (java.lang.Integer) values: [10]
Possible solutions: sum(), take(int), sum(groovy.lang.Closure), is(java.lang.Object), use([Ljava.lang.Object;), drop(int)
Type ':help' or ':h' for help.
Display stack trace? [yN]
2)我怎麼會增加每個頂點通過fill
邊緣的bonus
財產的價值導致它。
末我想有:
gremlin> g.V().valueMap()
==>[amount:[100],name:[a]]
==>[amount:[220.0],name:[b]]
==>[amount:[340.00],name:[c]]
我試圖用一個sack
做到這一點,但作爲一個麻袋整個穿越積累的數據不能完全解決它。我試圖將withSack
置於repeat
條款中嘗試創建新的麻袋,但這並不奏效。我沒有看到如何將屬性的值從一個頂點「傳遞」到下一個頂點的操作。