【问题标题】:How to increment or decrement a value of vertex property in gremlin如何在 gremlin 中增加或减少顶点属性的值
【发布时间】:2017-03-02 10:55:54
【问题描述】:

例如,这是我的顶点:

[label:songs, id:4336, name:testsong123, likeCount:0]

我必须做什么:

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

我现在在做什么:

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

替代方案: 有什么方法可以在不调用 get 的情况下增加或减少。

【问题讨论】:

    标签: titan gremlin tinkerpop3


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是我用 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());
      }
      

      【讨论】:

        猜你喜欢
        • 2017-04-25
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 2020-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多