neo4j Gremlin移除所有顶点

csbfibhn  于 2023-04-30  发布在  其他
关注(0)|答案(8)|浏览(218)

我知道如何在Gremlin中通过id移除顶点。但现在我需要清理数据库。如何删除多个顶点?
删除1v是这样的:

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

例如SQL TRUNCATE。如何在不删除类的情况下删除顶点/顶点?

wz3gfoph

wz3gfoph1#

在最近的版本中,Gremlin 2。3.0,删除所有顶点的最佳方法是:

g.V.remove()

**更新:**适用于Gremlin 3版本。你可以使用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控制台中的迭代。
此外,考虑到不同的图形系统将潜在地具有它们自己的方法,用于更快速和有效地移除该系统中的所有数据。例如,JanusGraph有这样的方法:

JanusGraphFactory.drop(graph)

其中“graph”是一个要清除的JanusGraph示例。

dzjeubhm

dzjeubhm2#

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

g.V().drop()

为什么这对我不起作用

只有当你使用Gremlin交互式REPL接口时,这才有效。为什么?drop返回一个迭代器,必须遍历它才能应用**,**Gremlin REPL接口会自动迭代返回的迭代器。

我是如何修复的

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

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

别忘了。..

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

g.tx().commit()
p3rjfoxz

p3rjfoxz3#

你可以试试

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

vatpfxk54#

在TinkerPop 3中:
drop()-步骤(filter/sideEffect)用于从图中移除元素和属性(即,即去除)。

g.V().drop()
tyky79it

tyky79it5#

你可以按如下方式来做;

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

piv4azn76#

蓝图曾经有一个clear()方法来实现这一点。..
g.clear()
但最近被删除了:
https://github.com/tinkerpop/blueprints/issues/248

1yjd4xko

1yjd4xko7#

TinkerPop3,Titan-1。0.0,

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

对我来说没问题你可以给予

umuewwlo

umuewwlo8#

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

相关问题