我找不到如何使用 Cypher 返回节点标签。
有人知道这个操作的语法吗?
要获取所有不同的节点标签:
MATCH (n) RETURN distinct labels(n)
要获取每个标签的节点数:
MATCH (n) RETURN distinct labels(n), count(*)
有一个函数标签(节点)可以返回节点的所有标签。
Neo4j 3.0 引入了db.labels()
返回数据库中所有可用标签的程序。利用:
call db.labels();
如果您想要所有单独的标签(而不是组合),您可以随时扩展答案:
MATCH (n)
WITH DISTINCT labels(n) AS labels
UNWIND labels AS label
RETURN DISTINCT label
ORDER BY label
START n=node(*) RETURN labels(n)
如果您使用的是 Java API,您可以快速获取Label
数据库中所有 s 的迭代器,如下所示:
GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
如果要获取指定节点的标签,请使用labels(node)
; 如果您只想获取 neo4j 中的所有节点标签,请改用此函数:call db.labels;
,永远不要使用此查询:MATCH n RETURN DISTINCT LABELS(n)
。它将进行全表扫描,这非常非常慢..