Gremlin - 更新多条边的值
Gremlin - Update values of multiple edges
我正在使用 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');
这是因为在中间遍历中可以通过idselect顶点,即GraphTraversal
class有V(String ... vertexIds)
作为成员函数。
但这对于边的情况就不一样了。我无法以这种方式 select 边缘,因为 E(String ... edgeIds)
不是 GraphTraversal
class.
的成员函数
有人可以建议我解决这个问题的正确方法吗?
谢谢。
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'))
您可以使用 V().outE().hasId(<list of IDs>)
获得与中间遍历 E()
相同的结果
我正在使用 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');
这是因为在中间遍历中可以通过idselect顶点,即GraphTraversal
class有V(String ... vertexIds)
作为成员函数。
但这对于边的情况就不一样了。我无法以这种方式 select 边缘,因为 E(String ... edgeIds)
不是 GraphTraversal
class.
有人可以建议我解决这个问题的正确方法吗?
谢谢。
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'))
您可以使用 V().outE().hasId(<list of IDs>)
E()
相同的结果