2012-07-18 46 views
1

我正在运行一个遍历所有节点的脚本。最初以为最大节点ID将对应于我通过此Cypher支架查询通过REST检索图中的节点的总数:在Neo4J中,如何获得图中最大的节点ID?

START n=node(*) RETURN count(n) 

然而,正如我通过每个数迭代,我看到一些节点在某些id不存在。所以,这意味着我的最大id节点是一个大于节点总数的数字。任何想法如何检索这个数字?我非常喜欢Cypher或Rest。

回答

2

你可以通过JMX得到这个号码,请参阅http://docs.neo4j.org/chunked/1.4.2/operations-monitoring.html或使用Java通过

Neo4jManager manager = new Neo4jManager(graphDb.getManagementBean(Kernel.class)); 
long nodeIDsInUse = manager.getPrimitivesBean.getNumberOfNodeIdsInUse(); 

通过REST这也暴露在网站管理JMX端点开始

http://localhost:7474/db/manage/server/jmx/domain/org.neo4j/instance%3Dkernel%230%2Cname%3DPrimitive%20count?_=1342719685294 
+0

除其他事项外,我返回: '“attributes”:[description:“这个Neo4j实例中使用的节点数目的估计”, ==>“name”:“NumberOfNodeIdsInUse”, == >“value”:12345, ==>“isReadable”:“true”, ==>“type”:“long”, ==>“isWriteable”:“false”, ==>“isIs” :“false” ==>},' 除非我遗漏了一些东西,这看起来仍然像是节点的总数。 – Newtang 2012-07-19 21:16:36

+0

'NumberOfNodeIdsInUse'不会给你实际的节点数量,而是给出的ID数量。这不是你想要的吗?在高可用性方案中,这些ID在从属之间分块,因此每个默认值的计数步数为1000。 – 2012-07-23 01:13:58

+0

所以,要明确一点,如果给出5个ID,那么这是否意味着0,1,2,3,4被给出了?或者,无论出于何种原因,ID可以跳过,所以0,1,3,5,10被给出?在任何一种情况下,'NumberOfNodeIdsInUse'将是5. – Newtang 2012-07-23 06:38:19

相关问题