【问题标题】:Gremlin: property name with static and dynamicGremlin:具有静态和动态的属性名称
【发布时间】:2020-07-09 13:51:00
【问题描述】:

我正在尝试使用选定的属性创建具有静态和动态值的顶点属性。代码如下:

g.V('%s').as('source')
 .until(or(hasLabel('target').has('v', '1'),loops().is(10)))
 .repeat(__.in())
 .outE('e').as('edge')
 .inV().as('u')
 .select('source')
 .property(single, 'v', '1')
 .property(single, union(constant('p_'),select('u').id()), select('e').properties('r').value())

此查询是将边的属性复制为值,将顶点的 id 复制为前缀为“p_”的属性名称。副本有效,但属性名称无效,它只保存前缀'p_'。

对这种行为有什么想法吗?我正在使用 tinkerpop 3.4.3,与 Neptune 版本相同。

谢谢!

【问题讨论】:

    标签: gremlin tinkerpop amazon-neptune


    【解决方案1】:

    此遍历中的 union() 步骤不会像您希望的那样返回前缀和属性的串联。相反,它将为 union() 中的每个项目返回一个遍历器。在这种情况下,一个包含“p_”,一个包含 id(),一个包含“r”属性。

    不幸的是,Gremlin 没有可以为您完成此任务的字符串连接函数。见下文:

    Concatenate Gremlin GraphTraversal result with string

    当您使用 Neptune 时,该答案中建议的解决方案也不起作用,因为 Neptune 不支持遍历中的 lambda。不幸的是,在这种情况下,实现此目的的最佳方法可能是将数据返回到您的应用程序,连接字符串,然后更新属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 2014-02-10
      • 2016-10-01
      • 2012-08-21
      相关资源
      最近更新 更多