Neo4j重置节点Id计数器

时间:2015-06-30 11:40:06

标签: transactions neo4j cypher

我正在执行cypher查询以在java中创建新节点。

  

CREATE(n:user {name:'ray',email:'@ something.com'})RETURN n

  try (Transaction tx = server.graphDb1.beginTx())
        {        
            try
            {
               Result result = server.graphDb1.execute(readString);                        
                       while (result.hasNext())
                        {

我遇到的问题是,执行后

执行此操作三次将导致

  

n:节点[0]; n:节点[1]; n:节点[2]

如果交易成功,一切都很棒。如果事务失败,则不会保存节点。 但节点ID是保留的。

接下来的三个请求将导致:

  

n:节点[3]; n:节点[4]; n:节点[5];

所以我有6个节点ID,但只有3个节点。有没有办法在事务失败后重置计数器?

1 个答案:

答案 0 :(得分:2)

节点id(及其赋值机制)是一个完全内部的东西,你作为数据库用户根本不应该关心它。唯一要记住的是不要在第三方系统中的任何地方存储节点ID。

根据Neo4j版本,未使用的ID将在重启后重复使用 - 但不要依赖此实现细节。