将 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() 它带你到相邻的顶点。