我正在使用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
类的成员函数。
有人可以建议我解决这个问题的正确方法吗?
谢谢。
答案 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>)
相同的结果