neo4j如何用Cypher返回所有节点标签?

时间:2013-08-23 08:46:06

标签: neo4j cypher

我找不到如何使用Cypher返回节点标签。

有人知道这个操作的语法吗?

7 个答案:

答案 0 :(得分:66)

获取所有不同的节点标签:

MATCH (n) RETURN distinct labels(n)

获取每个标签的节点数:

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

答案 1 :(得分:50)

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

答案 2 :(得分:16)

如果您想要所有单个标签(而不是组合),您可以随时扩展答案:

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

答案 3 :(得分:15)

Neo4j 3.0引入了程序db.labels(),返回数据库中所有可用的标签。使用:

call db.labels();

答案 4 :(得分:5)

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

答案 5 :(得分:3)

如果您正在使用Java API,则可以快速获取数据库中所有Label的迭代器,如下所示:

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

答案 6 :(得分:2)

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