Tôi không thể tìm cách trả lại nhãn nút bằng Cypher.neo4j cách trả về tất cả các nhãn nút bằng Cypher?
Bất kỳ ai biết cú pháp cho thao tác này?
Tôi không thể tìm cách trả lại nhãn nút bằng Cypher.neo4j cách trả về tất cả các nhãn nút bằng Cypher?
Bất kỳ ai biết cú pháp cho thao tác này?
Có một nhãn chức năng (nút) có thể trả về tất cả các nhãn cho một nút.
START n=node(*) RETURN labels(n)
Để có được tất cả các nhãn nút riêng biệt:
MATCH (n) RETURN distinct labels(n)
Để có được số lượng nút cho mỗi nhãn:
MATCH (n) RETURN distinct labels(n), count(*)
Nếu bạn muốn tất cả các nhãn cá nhân (không phải là sự kết hợp), bạn luôn có thể mở rộng trên các câu trả lời:
MATCH (n)
WITH DISTINCT labels(n) AS labels
UNWIND labels AS label
RETURN DISTINCT label
ORDER BY label
Nếu bạn đang sử dụng Java API, bạn có thể nhanh chóng nhận được một iterator của tất cả các Label
s trong cơ sở dữ liệu như vậy:
GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
"với Cypher" - OP –
Nếu bạn muốn nhận được các nhãn của một node chỉ định, sau đó sử dụng labels(node)
; Nếu bạn chỉ muốn nhận tất cả các nhãn nút trong neo4j, thì hãy sử dụng hàm này thay thế: call db.labels;
, không bao giờ sử dụng truy vấn này: MATCH n RETURN DISTINCT LABELS(n)
. Nó sẽ thực hiện quét toàn bộ bảng, rất chậm.
Neo4j 3.0 đã giới thiệu thủ tục db.labels()
phù thủy trả lại tất cả các nhãn có sẵn trong cơ sở dữ liệu. Sử dụng:
call db.labels();
'match n TRẢ NHÃN DISTINCT (n)' là 8 ký tự ít hơn để gõ :) –
Đồng ý với @FLekschas và hơn nữa, Neo khuyên bạn nên sử dụng 'MATCH' cho cơ sở dữ liệu Neo4j mới hơn vì 'START' dành cho các chỉ mục kế thừa. – ADTC
'Neo.ClientError.Statement.SyntaxError Dấu ngoặc đơn được yêu cầu để xác định các nút trong các mẫu, tức là (n) ...' (v. 3.1.1) – vladkras