Gremlin-更新多个边的值

时间:2019-11-18 21:50:53

标签: graph-databases gremlin gremlin-server amazon-neptune

我正在使用AWS Neptune,并且必须使用特定值修改一组EDGE的某个属性。我还需要在单个事务中完成此操作。在AWS Neptune中,manual transaction logic using tx.commit() and tx.rollback() is not supported。这意味着我必须在一次遍历中执行此操作。

如果我要修改顶点的属性而不是边,可以通过类似于以下查询的查询来完成:

g.V(<id 1>).property('name', 'Marko').V(<id 2>).property('name', 'Stephen');

这是因为在中间遍历时可以通过id选择顶点,即GraphTraversal类具有V(String ... vertexIds)作为成员函数。

但是对于边的情况则不同。我无法以这种方式选择边,因为E(String ... edgeIds)不是GraphTraversal类的成员函数。

有人可以建议我解决这个问题的正确方法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

Amazon Neptune引擎1.0.1.0.200463.0添加了Support for Gremlin Sessions,以允许在单个事务中执行多个Gremlin遍历。

但是,您也可以通过以下单个查询来做到这一点:

g.E('id1', 'id2', 'id3').coalesce(
    has(id, 'id1').property('name','marko'),
    has(id, 'id2').property('name','stephan'),
    has(id, 'id3').property('name','vadas'))

答案 1 :(得分:0)

使用E()可以得到与遍历V().outE().hasId(<list of IDs>)相同的结果