我从 Tinkerpop3 的 neo4j-gremlin-bolt Neo4j 实现中看到了 Tinkergraph 和 Neo4j-gremlin 之间的不同行为,特别是在这段代码中:
// different Tinkerpop impls
Graph graph = new Neo4JGraph(driver, vertexIdProvider, edgeIdProvider);
// Graph graph = Neo4jGraph.open("C:\\tmp\neo");
// Graph graph = TinkerGraph.open();
GraphTraversalSource g = graph.traversal();
String label = "Person";
for (int i = 0; i < 10; i++) {
System.out.println("Before " + +g.V().toList().size());
graph.addVertex(label);
System.out.println("After " + +g.V().toList().size());
}
// if graph is transactional
graph.tx().commit();
我所期望的是顶点数从 1 增加到 10,这就是我在 Tinkergraph 和 Neo4j-gremlin 中看到的。我在 neo4j-gremlin-bolt 中看到的是计数始终为 1(在第一个 AddVertex 之后)。提交后,Neo4J 数据库中出现了 10 个实例(如预期的那样)。第二次运行它,计数始终为 11(在第一个 addVertex 之后),并且在提交之后出现 20 个实例。
我让neo4j-gremlin-bolt按预期工作的唯一方法是在每个addVertex之后提交()和关闭()图形,这似乎不正确。
这似乎是基本行为,所以我认为我遗漏了一些明显的东西。
neo4j-gremlin-bolt - v0.2.18
tinkergraph-gremlin - v3.2.4
neo4j-gremlin - v3.2.4