我想将节点ID设置为0,1,2,3,....,而不是setProperty()
。
Node[] newno = new Node[265214];
for (int i = 0; i < newno.length; i++) {
newno[i] = db.createNode();
System.out.println(newno[i].getId());
}
它显示以下大ID号:
996660
996661
996662
996663
996656
996657
996658
996659
996668
996669
996670
例如,当我想创建节点时,newno[i]
的ID只是i
。对于大型数据集,如果每个周期都调用getProperty()
,它将减慢执行速度。实现这一点的更有效的方法是什么?
2条答案
按热度按时间f4t66c6m1#
ID是由Neo4j自动分配的,您无法更改。如果需要,请尝试使用节点上的属性。
myss37ts2#
正如@RaduK所指出的,neo4j设置了节点的id,并且不允许用户覆盖这个行为。也许他们将来会这么做。但是,如果你正在考虑在你的系统中使用neo4j生成的id,neo4j会在他们的页面上发出警告。
节点的ID是唯一的,但请注意以下事项:当节点和关系被删除时,Neo4j重用它的内部id,这意味着用这种方式引用它们是不好的做法,而是使用应用程序生成的id。
所以不要在你的系统中使用neo4j的id。
也就是说,你最关心的是每次使用属性都会导致延迟。在Neo4J 2.x中,他们给予你一个选项,在你的属性上设置一个索引,这样遍历就更快了。下面是你如何做到这一点的。在你的代码中,你有GraphDatabaseService的对象,插入下面的代码:
这段代码将告诉neo4j,从现在开始,您必须在属性“internal_id”上的所有“User”类型节点上创建并维护索引。
此外,neo4j有一个内部缓存系统,人们通常称之为热缓存。这意味着你的查询只在第一次运行时需要时间。从那时起,如果你重复尝试同一个查询,查询将很快。