2013-08-23 149 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(); 
相關問題