如何在 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());
}
例如这是我的顶点:
[标签:歌曲, 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());
}