2013-08-23 121 views

回答

40

有一个函数标签(节点)可以返回节点的所有标签。

5
START n=node(*) RETURN labels(n) 
46

要获得所有不同的节点标签:

MATCH (n) RETURN distinct labels(n) 

要获取节点数量每个标签:

MATCH (n) RETURN distinct labels(n), count(*) 
+5

'MATCH返回n不同的标签(N)'小于8个字符键入:) –

+0

与@FLekschas同意,而且,新建议您使用'MATCH'较新的Neo4j的数据库,因为'START'用于传统索引。 – ADTC

+0

'Neo.ClientError.Statement.SyntaxError需要括号来标识模式中的节点,即(n)...'(v.3.1.1) – vladkras

14

如果你希望所有的个人标签(未组合)你可以随时扩大答案:

MATCH (n) 
WITH DISTINCT labels(n) AS labels 
UNWIND labels AS label 
RETURN DISTINCT label 
ORDER BY label 
2

如果你使用的是Java API,你可以迅速得到所有Label S的迭代器在数据库中,像这样:

GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase); 
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels(); 
+1

“与Cypher” - OP –

0

如果你想获得一个指定节点的标签,然后使用labels(node) ;如果您只想获取neo4j中的所有节点标签,请改用此函数:call db.labels;,永远不要使用此查询:MATCH n RETURN DISTINCT LABELS(n)。它会做一个全表扫描,这是非常非常慢..

1

Neo4j 3.0已经介绍了程序db.labels() witch返回数据库中的所有可用标签。用途:

call db.labels(); 
相关问题