我正在尝试编写一个 gremlin 表达式,对于给定的顶点,该表达式将删除进出它的所有边,然后删除顶点本身。
我正在使用OrientDB 1.3-SNAPSHOT作为我的图形数据库。
这是我到目前为止的表达:
//The #8:1 just refers to a vertex
g.v('#8:1').bothE.each{ g.removeEdge(it) }.back(2)
我希望上面删除边缘,然后返回 2,这应该打印出节点#8:1
.但是,由于某种原因,我收到此错误:
Error: java.lang.NullPointerException
为什么会这样?
最后,如何删除顶点?文档显示removeVertex()
需要一个参数(即顶点)。如何将顶点从back(2)
传递到removeVertex()
?
如果您删除顶点,Gremlin 实际上会为您删除所有边。就我而言,我只需要做:
g.removeVertex(g.v('#8:1')); g.stopTransaction(SUCCESS);
这将删除顶点以及与顶点关联的任何边。gremlin 需要停止转换才能提交更改。
现在,至于为什么在我的语句的查询中抛出错误。这是因为each{}
是一个 grovvy 结构,所以我们退出管道。若要在管道中继续,请改用sideEffect{}
。