我刚刚开始使用 Neo4j 并运行“Hello World”类型的示例。
我创建了一个新数据库并打印出节点数,即 1(因为创建数据库时似乎有一个默认节点)。
我创建一个节点并将其添加到图表中。该图报告现在有 2 个节点 - 好的。
然后我再次删除节点,图表报告有 1 个节点 - 好的。
然后我关闭了数据库。
但是,当我再次运行相同的代码时(不删除数据库文件)。它现在报告最初有 2 个节点。我得到的不是 1-2-1,而是 2-3-2。这只发生一次 - 在第一次运行后它总是报告 2-3-2。
为什么我删除的节点重新出现,但只是第一次出现?
下面的代码:
package com.foo.neo.example;
import org.neo4j.graphdb.*;
import org.neo4j.kernel.EmbeddedGraphDatabase;
public class Deleting
{
static GraphDatabaseService graphDb;
public static void main(String[] args)
{
graphDb = new EmbeddedGraphDatabase("data");
System.out.println("STARTED");
printNodeCount();
Node firstNode;
Transaction tx = graphDb.beginTx();
try
{
firstNode = graphDb.createNode();
tx.success();
}
finally
{
tx.finish();
}
printNodeCount();
// delete the data again
tx = graphDb.beginTx();
try
{
firstNode.delete();
tx.success();
}
finally
{
tx.finish();
}
printNodeCount();
graphDb.shutdown();
}
private static void printNodeCount()
{
long nodecount = ((EmbeddedGraphDatabase) graphDb).getConfig()
.getGraphDbModule().getNodeManager()
.getNumberOfIdsInUse(Node.class);
System.out.println("Node count = " + nodecount);
}
}
和输出:
STARTED
Node count = 1
Node count = 2
Node count = 1
第二次(及后续)运行:
STARTED
Node count = 2
Node count = 3
Node count = 2