在 Janusgraph 中合并 Gremlin 查询

Coalesce Gremlin Query in Janusgraph

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

这里是使用两个合并步骤创建顶点(如果它们不存在)然后添加边的示例。请注意,我在此示例中使用了自定义 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')) 

假设有一个名为unique_property的属性,它唯一标识任何节点,节点的标签是node。假设我们要在节点 1 和节点 2 之间添加一条标记为 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()