【问题标题】:How to use less than inside option of CHOOSE step in gremlin如何在gremlin中使用少于CHOOSE步骤的内部选项
【发布时间】:2019-06-10 12:40:08
【问题描述】:
.choose(values('points')
  .option(lt(500), updating the vertex properties)
  .option(gt(500), updating and creating new properties)
  .option(none,creating new vertex )) 

points 是整数类型的顶点属性

我想在option中执行小于大于操作。我正在尝试上述方式。如果我错了,请纠正我。

如果有任何其他方法可以执行此操作,请告诉我。

谢谢

【问题讨论】:

    标签: gremlin tinkerpop


    【解决方案1】:

    自 Apache TinkerPop 3.4.2 起,此功能尚未实现。这是一个长期悬而未决的问题:TINKERPOP-1084。我认为如果你想要这个功能,你会做一个嵌套的choose()

    gremlin> g = TinkerFactory.createModern().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
    gremlin> g.V().hasLabel('person').
    ......1>   choose(values('age').is(lt(29)),
    ......2>          constant('lt29'),
    ......3>          choose(values('age').is(gt(29)),
    ......4>                 constant('gt29'),
    ......5>                 constant('29')))
    ==>29
    ==>lt29
    ==>gt29
    ==>gt29
    

    请注意,由于这些嵌套的choose() 操作,您并不局限于constant()。您可以在其中添加任何您喜欢的匿名遍历:

    gremlin> g.V().hasLabel('person').
    ......1>   choose(values('age').is(lt(29)),
    ......2>          constant('lt29'),
    ......3>          choose(values('age').is(gt(29)),
    ......4>                 math('_ - 29').by('age'),
    ......5>                 constant('29')))
    ==>29
    ==>lt29
    ==>3.0
    ==>6.0
    

    【讨论】:

    • 如果年龄的值为 gt29 那么我想从年龄中 减去 29。我认为要实现这一点,我必须存储查询中的年龄。是否可以将值存储在查询中。如果可能,如何存储值。否则如何实现。 .谢谢
    • 你可以使用math() step
    • 感谢斯蒂芬先生的回答。减法可以通过数学步骤完成。但在我的情况下,我指的是积分。让我们举一个例子 vertex as AddPts 包含 totalPoints 作为属性。将特定(例如:20)点添加到属性后,它不应超过 500。如果要超过 500。那么我需要通过添加新顶点来添加这些额外点。对于我需要获取当前顶点属性 totalPoints 的值并从 500 中减去该值。你能举个例子吗?
    • 好吧,你知道你有math()一步来做计算。为什么不直接将第 1 行更改为 choose(values('totalPoints').math('_+20').is(lt(500)) 然后您实际上不会修改属性值,直到您知道它是否超出了您的限制。如果您需要一个工作示例,我建议您使用一些示例数据编写一个新问题,例如stackoverflow.com/questions/51388315/…
    • 谢谢斯蒂芬先生。我用示例数据写了新问题。你能在这里检查一下吗stackoverflow.com/questions/56580992/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多