Gremlin 基于另一个顶点更新顶点特性
我想根据用户的Gremlin 基于另一个顶点更新顶点特性,gremlin,tinkerpop,amazon-neptune,Gremlin,Tinkerpop,Amazon Neptune,我想根据用户的分数在递增时更新高分。如果新增加的分数大于高分,则设置高分=分数 // initial data g.addV("player") .property(id, 1) .property(single, "score", 0) .property(single, "highScore", 0) // increment score by 1 and set highScore if required g.V(1) .sack(assign) .by("score
分数
在递增时更新高分
。如果新增加的分数
大于高分
,则设置高分
=分数
// initial data
g.addV("player")
.property(id, 1)
.property(single, "score", 0)
.property(single, "highScore", 0)
// increment score by 1 and set highScore if required
g.V(1)
.sack(assign)
.by("score")
.sack(sum)
.by(__.constant(1))
.property(single, "score", sack())
.choose(
__.values("highScore").is(lt(__.values("score"))),
__.property(single, "highScore", __.values("score")))
)
它似乎在lt(uuu.values(“score”)
上出错。它将其解析为遍历而不是值
com.amazon.neptune.tinkerpop.structure.NeptuneGraph$NeptuneGraphTraversal
无法转换为java.lang.Integer
如何将
score
的当前值传递到该谓词中?我尝试添加.value()
、.iterate()
和.next()
使用where()
的这种方法似乎有效:
gremlin> g.V(1).as('a').
......1> sack(assign).
......2> by("score").
......3> sack(sum).
......4> by(__.constant(1)).
......5> property(single, "score", sack()).
......6> choose(where('a', lt('a')).by('highScore').by('score'),
......7> __.property(single, "highScore", sack()))
==>v[1]
gremlin> g.V().valueMap()
==>[score:[1],highScore:[1]]
gremlin> g.V(1).as('a').
......1> sack(assign).
......2> by("score").
......3> sack(sum).
......4> by(__.constant(1)).
......5> property(single, "score", sack()).
......6> choose(where('a', lt('a')).by('highScore').by('score'),
......7> __.property(single, "highScore", sack()))
==>v[1]
gremlin> g.V().valueMap()
==>[score:[2],highScore:[2]]
gremlin> g.V().property('highScore',10)
==>v[1]
gremlin> g.V().valueMap()
==>[score:[2],highScore:[10]]
gremlin> g.V(1).as('a').
......1> sack(assign).
......2> by("score").
......3> sack(sum).
......4> by(__.constant(1)).
......5> property(single, "score", sack()).
......6> choose(where('a', lt('a')).by('highScore').by('score'),
......7> __.property(single, "highScore", sack()))
==>v[1]
gremlin> g.V().valueMap()
==>[score:[3],highScore:[10]]