graph - Gremlin eliminar todo vértice
neo4j (7)
Blueprints solía tener un método clear () para esto ...
g.clear()
Pero fue retirado recientemente:
Sé cómo eliminar un vértice por ID, pero necesito eliminar varios vértices (limpiar la base de datos).
Borrar 1 v es así:
ver = g.v(1)
g.removeVertex(ver)
En TinkerPop3, con Titan-1.0.0,
g.V().drop()
g.tx().commit() (commit the changes)
funciona para mi. Puedes intentarlo
En TinkerPop3:
El drop () - step (filter / sideEffect) se usa para eliminar elementos y propiedades del gráfico (es decir, eliminar).
g.V().drop()
En términos más recientes a partir de Gremlin 2.3.0, la eliminación de todos los vértices se lograría mejor con:
g.V.remove()
ACTUALIZACIÓN: Para la versión 3.x usaría 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]
Tenga en cuenta que drop()
no itera automáticamente el Traversal
ya que remove()
hizo así que tiene que llamar explícitamente a iterate()
para que se produzca la eliminación. La iteración en la consola Gremlin se trata en detalle en este tutorial .
Además, tenga en cuenta que los diferentes sistemas de gráficos tendrán potencialmente sus propios métodos para eliminar de manera más rápida y eficiente todos los datos en ese sistema. Por ejemplo, JanusGraph tiene este enfoque:
JanusGraphFactory.drop(graph)
donde "gráfico" es una instancia de JanusGraph
que desea borrar.
Puedes hacerlo de la siguiente manera;
graph.shutdown();
TitanCleanup.clear(graph);
Si está utilizando Tinkerpop3 (Titan 1.0.0), como se dijo antes, el comando es:
g.V().drop()
¿Por qué esto no me funcionó?
Esto solo funciona si está utilizando la interfaz REPL interactiva de Gremlin. ¿Por qué? drop
devuelve un iterador que se debe recorrer para que se aplique y la interfaz REPL de Gremlin se repite automáticamente sobre los iteradores devueltos.
Como lo arregle
Si (como yo) está utilizando una interfaz HTTP o WebSocket para Gremlin, debe iterar explícitamente sobre el iterador devuelto:
g.V().drop().iterate()
No se olvide...
... para cometer la transacción. En Titán, las transacciones se abren implícitamente pero deben cerrarse explícitamente :
g.tx().commit()
puedes probar
g.V.each{g.removeVertex(it)}
g.commit()