63

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

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

4

7 回答 7

85

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

MATCH (n) RETURN distinct labels(n)

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

MATCH (n) RETURN distinct labels(n), count(*)
于 2014-06-05T11:06:11.380 回答
62

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

于 2013-08-23T12:10:31.190 回答
37

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

call db.labels();
于 2017-12-18T12:45:18.280 回答
23

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

MATCH (n)
WITH DISTINCT labels(n) AS labels
UNWIND labels AS label
RETURN DISTINCT label
ORDER BY label
于 2014-12-06T17:54:09.563 回答
5
 START n=node(*) RETURN labels(n)
于 2013-12-02T16:34:32.090 回答
4

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

GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
于 2015-06-29T20:10:34.487 回答
4

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

于 2017-12-09T03:25:50.537 回答