Apache Tinkerpop 的 Neo4jGraph.open() 可以从文件系统打开数据库吗?

Can Apache Tinkerpop's Neo4jGraph.open() open a database from the file system?

我正在使用 Apache Tinkerpop 的 Gremlin 语言与 Neo4J 数据库交互。我可以使用 Neo4jGraph.open("/path/to/folder") 方法(来自 org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph)创建一个新的本地数据库。

Neo4J 文件填充了该文件夹,所以我知道正在创建一个数据库。当我从单元测试中使用相同的路径再次调用 .open 时,数据库文件似乎正在被新的数据库实例覆盖。之前添加的任何顶点都不再存在于数据库中。是否可以使用此方法重新打开以前创建的数据库,或者总是会生成一个新实例?

我希望 Neo4jGraph.open(path) 打开一个现有的图形(如果存在于该路径)或者创建一个新的图形(如果找不到)。我不希望它覆盖。我假设您在关闭图形之前没有在单元测试中提交事务:

gremlin> graph = Neo4jGraph.open('/tmp/neo4j')
==>neo4jgraph[community single [/tmp/neo4j]]
gremlin> g = graph.traversal()
==>graphtraversalsource[neo4jgraph[community single [/tmp/neo4j]], standard]
gremlin> g.addV('person').property('name','marko')
==>v[0]
gremlin> graph.close()
==>null
gremlin> graph = Neo4jGraph.open('/tmp/neo4j')
==>neo4jgraph[community single [/tmp/neo4j]]
gremlin> g = graph.traversal()
==>graphtraversalsource[neo4jgraph[community single [/tmp/neo4j]], standard]
gremlin> g.V()
gremlin> g.addV('person').property('name','marko')
==>v[0]
gremlin> g.tx().commit()
==>null
gremlin> graph.close()
==>null
gremlin> graph = Neo4jGraph.open('/tmp/neo4j')
==>neo4jgraph[community single [/tmp/neo4j]]
gremlin> g = graph.traversal()
==>graphtraversalsource[neo4jgraph[community single [/tmp/neo4j]], standard]
gremlin> g.V()
==>v[0]

如您所见,如果我 close() 没有 g.tx().commit() 然后重新打开图表,我添加的顶点不存在。但是,通过调用 commit() 我可以重新打开并获取我的顶点。