【问题标题】:Coalesce Gremlin Query in Janusgraph在 Janusgraph 中合并 Gremlin 查询
【发布时间】:2020-05-05 16:49:12
【问题描述】:

如何编写合并 gremlin 查询以在 janusgraph 中创建边?我创建了一个 node1,然后创建了 node2,然后在 node1 和 node2 之间创建了一条边。我希望以某种方式创建边缘,即使之前没有创建 node1/node2,也应该在创建边缘时创建它。

【问题讨论】:

    标签: graph gremlin coalesce janusgraph gremlin-server


    【解决方案1】:

    假设有一个名为unique_property 的属性唯一标识任何节点,并且该节点的标签是node。假设我们要在 node1 和 node2 之间添加一条标记为 connects 的边。

    g.V().has('node','unique_property','node1').fold()
         .coalesce(unfold(), __.addV('node').property('unique_property','node1'))
         .as('from_node') 
         .coalesce(__.V().has('node','unique_property','node2'), __.addV('node').property('unique_property','node2'))
         .addE('connects')
         .from('from_node')
         .iterate()
    

    【讨论】:

      【解决方案2】:

      这是一个使用两个合并步骤来创建顶点(如果它们不存在)然后添加边的示例。请注意,我在此示例中使用了自定义 ID。您可能需要对 JanusGraph 使用不同的方案,但这是您可以使用的通用模式。您也可以通过其他方式编写此代码,但希望这可以帮助您入门。

      g.V('v1').fold().coalesce(unfold(),addV('test').property(id,'v1')).
        V('v2').fold().coalesce(unfold(),addV('test').property(id,'v2')).
        addE('myedge').to(V('v1')) 
      

      【讨论】:

        猜你喜欢
        • 2019-02-14
        • 2023-04-04
        • 2019-07-27
        • 2023-03-29
        • 1970-01-01
        • 2022-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多