如何在Gremlin图中增加边缘属性计数器

时间:2019-05-17 04:02:41

标签: gremlin

我有一个图形,其边缘各具有“ count”属性,以表示在其两个顶点之间进行过渡的次数。 每当进行转换时,我都想增加该值;有有效的方法吗?

我想避免读取值,先递增然后更新,因为增量可能来自多个来源,并且我想避免出现竞争情况。

我有一个执行类似操作的查询,但似乎仅对顶点属性有效:

g.V('10b56175-b3e5-db7c-6d1f-04f9fe7caba8').property(single, 'count', union(values('count'), constant(1.0)).sum()).valueMap()

有什么方法可以使上述查询与边属性兼容?

谢谢!

1 个答案:

答案 0 :(得分:0)

它在边缘上工作正常,但是property()的边缘没有Cardinality的过载。

gremlin> g.E(11).property('count', union(values('count'), constant(1.0)).sum()).valueMap()
==>[count:1.0,weight:0.4]
gremlin> g.E(11).property('count', union(values('count'), constant(1.0)).sum()).valueMap()
==>[count:2.0,weight:0.4]
gremlin> g.E(11).property('count', union(values('count'), constant(1.0)).sum()).valueMap()
==>[count:3.0,weight:0.4]

我认为您不能直接通过Gremlin来使增量更好。除非您的基础图形数据库具有某些用于计数器的本机方法,否则在写入之前总会有一读。