Gremlin remove all Vertex

≯℡__Kan透↙ 提交于 2019-12-29 03:57:22

问题


I know how to remove a vertex by id, but I need to delete multiple vertices (clean the db).

Deleting 1 v is like this:

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

回答1:


you can try

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



回答2:


In more recent terms as of Gremlin 2.3.0, removal of all vertices would be best accomplished with:

g.V.remove()

UPDATE: For version Gremlin 3.x you would use 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]

Note that drop() does not automatically iterate the Traversal as remove() did so you have to explicitly call iterate() for the deletion to occur. Iteration in the Gremlin Console is discussed in detail in this tutorial.

Also, consider that different graph systems will potentially have their own methods for more quickly and efficiently removing all data in that system. For example, JanusGraph has this approach:

 JanusGraphFactory.drop(graph)

where "graph" is a JanusGraph instance you want cleared out.




回答3:


If you are using Tinkerpop3 (Titan 1.0.0), as said before, the command is:

g.V().drop()

Why this did not work for me

This only works if you are using the Gremlin interactive REPL interface. Why? drop returns an iterator that must be traversed to be applied and the Gremlin REPL interface automatically iterates over returned iterators.

How I fixed it

If (like me) you are using an HTTP or WebSocket interface to Gremlin, you must explicitly iterate over the returned iterator:

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

Do not forget...

...to commit the transaction. In Titan, transactions are opened implicitly but must be closed explicitly:

g.tx().commit()



回答4:


You can do it as follows;

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



回答5:


Blueprints used to have a clear() method for this...

g.clear()

But it was recently removed:

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




回答6:


In TinkerPop3:

The drop()-step (filter/sideEffect) is used to remove element and properties from the graph (i.e. remove).

g.V().drop()



回答7:


In TinkerPop3, with Titan-1.0.0,

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

works for me. You can give a try




回答8:


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

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



来源:https://stackoverflow.com/questions/12814305/gremlin-remove-all-vertex

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!