簡體   English   中英

neo4j如何用Cypher返回所有節點標簽?

[英]neo4j how to return all node labels with Cypher?

我找不到如何用Cypher返回節點標簽。

有誰知道這個操作的語法?

要獲取所有不同的節點標簽:

MATCH (n) RETURN distinct labels(n)

要獲取每個標簽的節點數:

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

有一個函數標簽(節點)可以返回節點的所有標簽。

如果您想要所有單個標簽(而不是組合),您可以隨時擴展答案:

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

Neo4j 3.0引入了db.labels()過程,返回數據庫中所有可用的標簽。 使用:

call db.labels();
 START n=node(*) RETURN labels(n)

如果您正在使用Java API,則可以快速獲取數據庫中所有Label的迭代器,如下所示:

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) 它會進行全表掃描,這非常慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM