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]]