【发布时间】:2012-10-10 07:37:36
【问题描述】:
我知道如何通过 id 删除一个顶点,但我需要删除多个顶点(清理数据库)。
删除1v是这样的:
ver = g.v(1)
g.removeVertex(ver)
【问题讨论】:
我知道如何通过 id 删除一个顶点,但我需要删除多个顶点(清理数据库)。
删除1v是这样的:
ver = g.v(1)
g.removeVertex(ver)
【问题讨论】:
从 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() 不会像 remove() 那样自动迭代 Traversal,因此您必须显式调用 iterate() 才能进行删除。 Gremlin 控制台中的迭代在此tutorial 中有详细讨论。
此外,请考虑不同的图形系统可能会有自己的方法,以便更快、更有效地删除该系统中的所有数据。例如,JanusGraph 有这种方法:
JanusGraphFactory.drop(graph)
其中“graph”是您要清除的JanusGraph 实例。
【讨论】:
TitanCleanup 实用程序 - thinkaurelius.github.io/titan/javadoc/0.5.0/com/thinkaurelius/…)。没有“Gremlin”方法可以更快地删除所有顶点。
如果您使用的是 Tinkerpop3 (Titan 1.0.0),如前所述,命令为:
g.V().drop()
这仅在您使用 Gremlin 交互式 REPL 界面时才有效。为什么? drop 返回一个必须遍历才能应用的迭代器并且 Gremlin REPL 接口会自动迭代返回的迭代器。
如果(像我一样)您使用 HTTP 或 WebSocket 接口连接 Gremlin,则必须显式迭代返回的迭代器:
g.V().drop().iterate()
...提交事务。在 Titan 中,事务是隐式打开的,但必须显式关闭:
g.tx().commit()
【讨论】:
你可以试试
g.V.each{g.removeVertex(it)}
g.commit()
【讨论】:
你可以这样做;
graph.shutdown();
TitanCleanup.clear(graph);
【讨论】:
在 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);
}
}
【讨论】: