Gremlin:在单个 gremlin 查询中添加边和删除边
Gremlin: Add an edge and drop an edge in single gremlin query
如何在单个 gremlin 查询中向相同的顶点类型添加边和删除边。
假设我们有两种类型的顶点类型 A --is--> B 现在我有一个连接到 B 的其他顶点的顶点。
我想将 A 的顶点更新为 B 的某个其他顶点。
目前,我正在删除当前的 B 顶点,然后添加新的顶点。
您可以使用 sideEffect()
:
在一次遍历中完成
gremlin> g.V().has('person','name','marko').as('m').
......1> outE('knows').
......2> filter(inV().has('person','name','vadas')).
......3> sideEffect(drop()).
......4> V().has('person','name','peter').
......5> addE('knows').from('m')
==>e[13][1-knows->6]
在第 1 行,我们基本上确定了我们想要摆脱的边缘(即从 "marko" 到 "vadas" 的 "knows" 边缘)并且我们 drop()
第 3 行。在第 4 行,我们查找我们希望 "marko" 连接到的顶点,然后在第 5 行添加边。
如何在单个 gremlin 查询中向相同的顶点类型添加边和删除边。
假设我们有两种类型的顶点类型 A --is--> B 现在我有一个连接到 B 的其他顶点的顶点。
我想将 A 的顶点更新为 B 的某个其他顶点。
目前,我正在删除当前的 B 顶点,然后添加新的顶点。
您可以使用 sideEffect()
:
gremlin> g.V().has('person','name','marko').as('m').
......1> outE('knows').
......2> filter(inV().has('person','name','vadas')).
......3> sideEffect(drop()).
......4> V().has('person','name','peter').
......5> addE('knows').from('m')
==>e[13][1-knows->6]
在第 1 行,我们基本上确定了我们想要摆脱的边缘(即从 "marko" 到 "vadas" 的 "knows" 边缘)并且我们 drop()
第 3 行。在第 4 行,我们查找我们希望 "marko" 连接到的顶点,然后在第 5 行添加边。