Gremlin删除所有顶点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gremlin删除所有顶点相关的知识,希望对你有一定的参考价值。
我知道如何通过id删除顶点,但我需要删除多个顶点(清理数据库)。
删除1 v是这样的:
ver = g.v(1)
g.removeVertex(ver)
你可以试试
g.V.each{g.removeVertex(it)}
g.commit()
在最近的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()
才能进行删除。在这个tutorial中详细讨论了Gremlin控制台中的迭代。
此外,请考虑不同的图形系统可能有自己的方法来更快速有效地删除该系统中的所有数据。例如,JanusGraph有这种方法:
JanusGraphFactory.drop(graph)
其中“graph”是你要清除的JanusGraph
实例。
如果你正在使用Tinkerpop3(Titan 1.0.0),如前所述,命令是:
g.V().drop()
为什么这对我不起作用
这仅适用于使用Gremlin交互式REPL界面的情况。为什么? drop
返回一个必须遍历才能应用的迭代器,Gremlin REPL接口会自动遍历返回的迭代器。
我是如何修理它的
如果(像我一样)您正在使用Gremlin的HTTP或WebSocket接口,则必须显式迭代返回的迭代器:
g.V().drop().iterate()
不要忘记...
...提交交易。在Titan中,事务是隐式打开的,但必须明确关闭:
g.tx().commit()
你可以这样做;
graph.shutdown();
TitanCleanup.clear(graph);
蓝图曾经有一个clear()方法...
g.clear()
但它最近删除了:
https://github.com/tinkerpop/blueprints/issues/248
在TinkerPop3中:
drop() - step(filter / sideEffect)用于从图中删除元素和属性(即删除)。
g.V().drop()
在TinkerPop3中,使用Titan-1.0.0,
g.V().drop()
g.tx().commit() (commit the changes)
适合我。你可以尝试一下
public class JanusGraphCleanup {
@Deprecated
public static void clear(JanusGraph graph) throws BackendException {
JanusGraphFactory.drop(graph);
}
}
以上是关于Gremlin删除所有顶点的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Gremlin 从我在 Titan 中关注的所有用户(边缘)获取帖子(顶点)