我正在尝试编写一个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()
?
答案 0 :(得分:0)
如果删除顶点,Gremlin实际上会删除所有边缘。就我而言,我只需要这样做:
g.removeVertex(g.v('#8:1')); g.stopTransaction(SUCCESS);
这将删除顶点和与顶点关联的任何边。要让gremlin提交更改,需要停止转换。
现在,为什么在我的语句的查询中抛出了错误。这是因为each{}
是一个grovvy构造,所以我们退出管道。要继续使用管道,请改用sideEffect{}
。