如何在 gremlin 中增加或减少顶点 属性 的值

How to increment or decrement a value of vertex property in gremlin

例如这是我的顶点:

[标签:歌曲, id:4336, name:testsong123, likeCount:0 ]

我要做的事情:

我想在用户喜欢这首歌时增加 "likeCount" 每当用户不喜欢这首歌时,减少 "likeCount"。

我现在在做什么:

默认情况下,我的做法是通过id获取顶点并将“+1”添加到"likeCount",然后更新为database.similar进行递减,将-1添加到"likeCount" 并更新到数据库。

选择: 有没有办法在没有 get 调用的情况下增加或减少。

如果您没有对顶点的引用,那么您别无选择,只能查找它(即获取它)。查找应该不是一个大问题,因为您打算按 id 查找,这应该不是很昂贵。

这是我在 Java 中编写的 DSL,我认为您可以做类似的事情。

valueTraversal 可以替换为constant(1),或者traversal.count().

public default GraphTraversal<S, ?> incrementProperty(final String propertyKey,
        final GraphTraversal<?,?> valueTraversal) {
    return property(Cardinality.single, propertyKey,
            __.union(
                __.values(propertyKey),
                valueTraversal)
            .sum());
}

public default GraphTraversal<S, ?> decrementProperty(final String propertyKey,
        final GraphTraversal<?,?> valueTraversal) {
    return property(Cardinality.single, propertyKey,
            __.union(
                __.values(propertyKey),
                valueTraversal).math("_ * -1")
            .sum());
}