Neo4j 重置节点 ID 计数器

Neo4j Reset node Id counter

我正在执行密码查询以在 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: Node[0]; n: Node[1]; n: Node[2]

如果交易成功,一切都很好。如果交易失败,节点将不会被保存。 但是节点 ID 是保留的。

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

n: Node[3]; n: Node[4]; n: Node[5];

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

节点 ID(及其分配机制)是完全内部的东西,您作为数据库用户根本不应该关心。唯一要记住的是不要将节点 ID 存储在第三方系统中的任何位置。

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