Gremlin删除所有顶点

时间:2012-10-10 07:37:37

标签: graph neo4j gremlin

我知道如何通过id删除顶点,但我需要删除多个顶点(清理数据库)。

删除1 v是这样的:

ver = g.v(1)
g.removeVertex(ver)

8 个答案:

答案 0 :(得分:37)

在Gremlin 2.3.0的最新术语中,删除所有顶点最好用:

g.V.remove()

更新:对于版本Gremlin 3.x,您可以使用drop()

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().drop().iterate()
gremlin> graph
==>tinkergraph[vertices:0 edges:0]

请注意,drop()不会自动将Traversal作为remove()进行迭代,因此您必须明确调用iterate()才能进行删除。 Gremlin控制台中的迭代将在此tutorial中详细讨论。

另外,请考虑不同的图形系统可能有自己的方法来更快速有效地删除该系统中的所有数据。例如,JanusGraph有这种方法:

 JanusGraphFactory.drop(graph)

其中“graph”是您要清除的JanusGraph实例。

答案 1 :(得分:18)

你可以尝试

g.V.each{g.removeVertex(it)}
g.commit()

答案 2 :(得分:17)

如果你正在使用Tinkerpop3(Titan 1.0.0),如前所述,命令是:

g.V().drop()

为什么这对我不起作用

这仅适用于使用Gremlin交互式REPL界面的情况。为什么? drop返回一个必须遍历的迭代器 Gremlin REPL接口自动迭代返回的迭代器。

我是如何修理的

如果(像我一样)你正在使用Gremlin的HTTP或WebSocket接口,你必须显式迭代返回的迭代器:

g.V().drop().iterate()

别忘了......

...提交交易。在Titan中,交易是隐式打开的,但必须明确关闭

g.tx().commit()

答案 3 :(得分:6)

您可以按照以下方式执行此操作;

graph.shutdown();
TitanCleanup.clear(graph);

答案 4 :(得分:5)

蓝图过去有一个clear()方法...

g.clear()

但它最近被删除了:

https://github.com/tinkerpop/blueprints/issues/248

答案 5 :(得分:3)

在TinkerPop3中:

  

drop() - step(filter / sideEffect)用于从图形中删除元素和属性(即删除)。

g.V().drop()

答案 6 :(得分:3)

在TinkerPop3中,使用Titan-1.0.0,

g.V().drop()
g.tx().commit()   (commit the changes)

适合我。你可以尝试一下

答案 7 :(得分:0)

public class JanusGraphCleanup {
    @Deprecated
    public static void clear(JanusGraph graph) throws BackendException {
        JanusGraphFactory.drop(graph);
    }
}

参考:https://github.com/JanusGraph/janusgraph/blob/master/janusgraph-core/src/main/java/org/janusgraph/core/util/JanusGraphCleanup.java