Gremlin删除所有顶点

Ale*_*nko 23 graph neo4j gremlin

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

删除1 v是这样的:

ver = g.v(1)
g.removeVertex(ver)
Run Code Online (Sandbox Code Playgroud)

ste*_*tte 39

在最近的Gremlin 2.3.0术语中,删除所有顶点最好用以下方法完成:

g.V.remove()
Run Code Online (Sandbox Code Playgroud)

更新:对于版本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]
Run Code Online (Sandbox Code Playgroud)

请注意,drop()不会自动遍历Traversal因为remove()这样做,你必须显式调用iterate()的发生删除.本教程将详细讨论Gremlin控制台中的迭代.

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

 JanusGraphFactory.drop(graph)
Run Code Online (Sandbox Code Playgroud)

其中"graph"是JanusGraph您要清除的实例.

  • 存在更快的方法,但可能依赖于图形数据库本身(例如,如果您使用Titan,则可以使用`TitanCleanup`实用程序 - http://thinkaurelius.github.io/titan/javadoc/0.5.0/com /thinkaurelius/titan/core/util/TitanCleanup.html).没有"Gremlin"方法可以更快地删除所有顶点. (4认同)

Pet*_*uer 20

你可以试试

g.V.each{g.removeVertex(it)}
g.commit()
Run Code Online (Sandbox Code Playgroud)


dav*_*d_p 20

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

g.V().drop()
Run Code Online (Sandbox Code Playgroud)

为什么这对我不起作用

这仅适用于使用Gremlin交互式REPL界面的情况.为什么?drop返回必须遍历以应用的迭代器,并且 Gremlin REPL接口自动迭代返回的迭代器.

我是如何修理它的

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

g.V().drop().iterate()
Run Code Online (Sandbox Code Playgroud)

不要忘记...

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

g.tx().commit()
Run Code Online (Sandbox Code Playgroud)


Duc*_*035 6

你可以这样做;

graph.shutdown();
TitanCleanup.clear(graph);
Run Code Online (Sandbox Code Playgroud)


esp*_*eed 5

蓝图曾经有一个clear()方法...

g.clear()

但它最近删除了:

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


Dai*_*ima 5

在 TinkerPop3 中:

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

g.V().drop()
Run Code Online (Sandbox Code Playgroud)