Nie mogę znaleźć sposobu, aby zwrócić etykiety węzłów z Cypher.neo4j jak zwrócić wszystkie etykiety węzłów za pomocą Cypher?
Ktoś zna składnię tej operacji?
Nie mogę znaleźć sposobu, aby zwrócić etykiety węzłów z Cypher.neo4j jak zwrócić wszystkie etykiety węzłów za pomocą Cypher?
Ktoś zna składnię tej operacji?
Istnieją etykiety funkcji (węzeł), które mogą zwracać wszystkie etykiety węzła.
START n=node(*) RETURN labels(n)
Aby uzyskać wszystkie odrębne etykiety węzła:
MATCH (n) RETURN distinct labels(n)
Aby uzyskać zliczania węzła dla każdej etykiecie:
MATCH (n) RETURN distinct labels(n), count(*)
Jeśli chcesz, aby wszystkie poszczególne etykiety (nie kombinacje) Cię zawsze można rozwinąć w odpowiedziach:
MATCH (n)
WITH DISTINCT labels(n) AS labels
UNWIND labels AS label
RETURN DISTINCT label
ORDER BY label
Jeśli używasz API Javy, można szybko uzyskać iterację wszystkich Label
s w bazie danych tak:
GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
"z Cypher" - OP –
Jeśli chcesz uzyskać etykiety węzła określić, a następnie użyć labels(node)
; Jeśli chcesz uzyskać wszystkie etykiety węzłów w neo4j, użyj tej funkcji: call db.labels;
, nigdy nie używaj tego zapytania: MATCH n RETURN DISTINCT LABELS(n)
. Wykona pełny skan tabeli, który jest bardzo powolny.
Neo4j 3.0 wprowadził procedurę, która zwraca wszystkie dostępne etykiety w bazie danych. Zastosowanie:
call db.labels();
'MATCH n RETURN DISTINCT Etykiety (n)' jest 8 znaków mniej wpisać :) –
Zgadzam się z @FLekschas a ponadto Neo zaleca użycie 'MATCH' dla nowych baz Neo4j ponieważ' START' jest dla starszych indeksów. – ADTC
'Neo.ClientError.Statement.SyntaxError Nawiasy są wymagane do identyfikacji węzłów we wzorach, tj. (N) ...' (v. 3.1.1) – vladkras