将 Gremlin 查询压缩为一个
Condensing Gremlin queries into one
我有两个查询删除图中相同初始顶点的某些顶点
g.V(id).outV().drop().iterate()
g.V(id).drop().iterate()
是否可以将这两个查询合并为一个?
第二个问题是如何在顶点被删除之前对顶点执行一些终端操作,我尝试使用sideEffect,但它需要return值
g.V(id).outV().sideEffect(outV().forEachRemainig(x -> // do something)).drop()
对于您最初的问题,您可以通过这样的 sideEffect()
来完成:
g.V(id).sideEffect(out().drop()).drop()
对于第二次遍历,您可以通过将 sideEffect()
切换为执行删除,然后将剩余操作作为主遍历流的一部分来完成此操作。由于 sideEffect()
将传入的遍历流式传输到输出,您将能够像这样对它们执行操作:
g.V(id).sideEffect(drop()).valueMap()
这里请注意,在你原来的遍历中你去了 g.V(id).outV()
这是不允许的,因为 outV()
只能从边缘开始,所以我把它改成了 out()
它带你到相邻的顶点。
我有两个查询删除图中相同初始顶点的某些顶点
g.V(id).outV().drop().iterate()
g.V(id).drop().iterate()
是否可以将这两个查询合并为一个?
第二个问题是如何在顶点被删除之前对顶点执行一些终端操作,我尝试使用sideEffect,但它需要return值
g.V(id).outV().sideEffect(outV().forEachRemainig(x -> // do something)).drop()
对于您最初的问题,您可以通过这样的 sideEffect()
来完成:
g.V(id).sideEffect(out().drop()).drop()
对于第二次遍历,您可以通过将 sideEffect()
切换为执行删除,然后将剩余操作作为主遍历流的一部分来完成此操作。由于 sideEffect()
将传入的遍历流式传输到输出,您将能够像这样对它们执行操作:
g.V(id).sideEffect(drop()).valueMap()
这里请注意,在你原来的遍历中你去了 g.V(id).outV()
这是不允许的,因为 outV()
只能从边缘开始,所以我把它改成了 out()
它带你到相邻的顶点。