Ответ 1
вы можете попробовать
g.V.each{g.removeVertex(it)}
g.commit()
Я знаю, как удалить вершину по идентификатору, но мне нужно удалить несколько вершин (очистить БД).
Удаление 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()
для удаления. Итерация в Gremlin Console подробно обсуждается в этом руководстве.
Также учтите, что разные графовые системы потенциально могут иметь свои собственные методы для более быстрого и эффективного удаления всех данных в этой системе. Например, у JanusGraph такой подход:
JanusGraphFactory.drop(graph)
где "graph" - это экземпляр JanusGraph
вы хотите очистить.
Если вы используете Tinkerpop3 (Titan 1.0.0), как сказано ранее, команда:
g.V().drop()
Это работает, только если вы используете интерактивный интерфейс REPL Gremlin. Зачем? drop
возвращает итератор, который должен быть перенесен для применения и. Интерфейс Gremlin REPL автоматически выполняет итерации по возвращенным итераторам.
Если (например, я) вы используете интерфейс HTTP или WebSocket для Gremlin, вы должны явно перебирать возвращаемый итератор:
g.V().drop().iterate()
... для совершения транзакции. В Titan транзакции открываются неявно, но должен быть явно закрыт:
g.tx().commit()
Вы можете сделать это следующим образом:
graph.shutdown();
TitanCleanup.clear(graph);
У чертежей был метод clear() для этого...
g.clear()
Но он был недавно удален:
В 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);
}
}