首页 > 解决方案 > 将 Gremlin 查询压缩为一个

问题描述

我有两个查询删除图中相同初始顶点的某些顶点

g.V(id).outV().drop().iterate()
g.V(id).drop().iterate() 

是否可以将这两个查询合并为一个?

第二个问题是如何在顶点被删除之前对顶点执行一些终端操作,我尝试使用sideEffect,但它需要返回值

g.V(id).outV().sideEffect(outV().forEachRemainig(x -> // do something)).drop()

标签: gremlintinkerpop

解决方案


对于您最初的问题,您可以通过以下方式完成sideEffect()此操作:

g.V(id).sideEffect(out().drop()).drop()

对于第二次遍历,您可以通过切换sideEffect()到执行删除来完成此操作,然后将剩余操作作为主要遍历流的一部分。由于sideEffect()将传入的遍历流式传输到输出,您将能够对它们执行如下操作:

g.V(id).sideEffect(drop()).valueMap()

这里只是一个注释,在你原来的遍历中你去了g.V(id).outV()这是不允许的,因为outV()只能从边缘工作,所以我把它改成了out()带你到相邻顶点的地方。


推荐阅读